Docker VOLUME为不同的用户
我使用docker和docker-compose来构build我的应用程序。 现在有两个开发者在github上托pipe这个项目。
我们的项目结构是:
- SUP
- dockerfiles
- 开发
- build立
- .profile文件
- Dockerfile
- 泊坞窗,compose.yml
- build立
- 开发
- dockerfiles
现在我们有./dockerfiles/dev/docker-compose.yml
像这样:
app: container_name: sup-dev build: ./build
和./dockerfiles/dev/build/Dockerfile
:
FROM sup:dev # docker-compose tries to find .profile relative to build dir: # ./dockerfiles/dev/build COPY .profile /var/www/
我们像这样运行容器:
docker-compose up -d
一切工作正常,但由于不同的操作系统,我们有我们的代码在不同的地方: /home/aliance/www/project
为我和/home/user/other/path/project
第二个开发/home/user/other/path/project
。 所以我不能只在Dockerfile
添加卷指令。
现在我们以这种错误的方式解决这个问题: – 我用我的个人configurationlsyncd将文件传输到容器中 – 第二个使用volume
指令到Dockerfile
但没有Dockerfile
它。
可能是你知道我怎么可以编写一个Dockerfile
docker-compose
的统一Dockerfile
来将代码从不同的path卷到应用程序容器中?
主机上的文件path应该不重要。 为什么你需要绝对path?
你可以使用相对于docker-compose.yml
path,所以它们对于两个开发者应该是相同的。
Dockerfile中的VOLUME
指令总是与构build上下文有关,所以如果你愿意的话,你可以使用如下的东西:
app: container_name: sup-dev build: .. dockerfile: build/Dockerfile
这样, Dockerfile
的构build上下文将是项目的根。
也许你应该把你的Dockerfile保存在你的项目的根目录下。 然后你可以在Dockerfile中添加一条指令:
COPY ./ /usr/src/app/
或(不推荐在产品中)
VOLUME /usr/src/app
+(运行容器的选项,因为我不知道docker组成)
-v /path/to/your/code:/usr/src/app