Docker,在生产中复制文件并在开发中使用批量

时间:2018-07-16 09:17:08

标签: docker dockerfile production

我不熟悉使用docker进行开发,但想在我的最新项目中尝试使用它,但遇到了几个问题。

我有一种情况,我想将当前项目目录作为卷链接到处于开发模式的运行中的Docker容器,以便可以在本地进行文件更改,而无需每次都重新启动容器。为此,我有以下命令:

docker run --name app_instance -p 3100:80 -v $(pwd):/app appimage

相比之下,在生产环境中,我想从当前项目目录中复制文件。 docker文件中的E.G具有ADD . /app(使用.dockerignore文件忽略某些文件夹)。另外,我想挂载一个用于永久存储的卷。对于这种情况,我有以下命令:

docker run --name app_instance -p 80:80 -v ./filestore:/app/filestore appimage

我的问题是,只有一个dockerfile,对于开发命令,将在/app挂载一个卷,并在ADD . /app复制一个文件。我还没有测试在这种情况下会发生什么,但是我假设在同一目的地同时使用这两种方法是不正确的。

我的问题是,处理这种情况的最佳实践是什么?

我想到的解决方案:

  • 在开发过程中将项目文件夹安装到与/app不同的路径,并忽略dockerfile在容器中创建的/ app目录
  • 具有两个docker文件,一个用于复制当前项目,一个不用于复制当前项目。

1 个答案:

答案 0 :(得分:0)

  

我的问题是,只有一个dockerfile,对于开发命令,将在/ app挂载一个卷,并且还会使用ADD复制文件。 / app。我还没有测试在这种情况下会发生什么,但是我假设在同一目的地同时使用这两种方法是不正确的。

在这种情况下,它将执行以下操作:

a)在构建docker时,将主机服务器中的代码添加到容器中的app文件夹中。

b)当docker运行时,将本地应用程序安装到容器中的文件夹中,此处始终是您最新的开发代码。

但是它将覆盖您在dockerfile中添加的内容,因此这可以满足您的要求。您应该尝试一下,不需要任何复杂的解决方案。