我不熟悉使用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目录答案 0 :(得分:0)
我的问题是,只有一个dockerfile,对于开发命令,将在/ app挂载一个卷,并且还会使用ADD复制文件。 / app。我还没有测试在这种情况下会发生什么,但是我假设在同一目的地同时使用这两种方法是不正确的。
在这种情况下,它将执行以下操作:
a)在构建docker时,将主机服务器中的代码添加到容器中的app文件夹中。
b)当docker运行时,将本地应用程序安装到容器中的文件夹中,此处始终是您最新的开发代码。
但是它将覆盖您在dockerfile中添加的内容,因此这可以满足您的要求。您应该尝试一下,不需要任何复杂的解决方案。