Docker VOLUME为不同的用户

我使用docker和docker-compose来构build我的应用程序。 现在有两个开发者在github上托pipe这个项目。

我们的项目结构是:

  • SUP
    • dockerfiles
      • 开发
        • build立
          • .profile文件
          • Dockerfile
        • 泊坞窗,compose.yml

现在我们有./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.ymlpath,所以它们对于两个开发者应该是相同的。

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