适用于不同用户的Docker VOLUME

时间:2015-11-25 12:40:23

标签: docker dockerfile docker-compose

我正在使用docker和docker-compose来构建我的应用程序。现在有两个开发人员在github上托管该项目。

我们的项目结构是:

  • SUP
    • dockerfiles
      • dev的
        • 构建
          • 的.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代表第二个开发人员。所以我不能只将音量指令添加到Dockerfile

现在我们以错误的方式解决这个问题: - 我正在使用lsyncd和我的个人配置将文件传输到容器中 - 第二个使用volume指令进入Dockerfile但未提交。

您可能知道如何为Dockerfile编写统一的docker-compose代码,以便将代码从不同的路径转移到应用容器中?

2 个答案:

答案 0 :(得分:2)

主机上的文件路径无关紧要。你为什么需要绝对路径?

您可以使用相对于docker-compose.yml的路径,因此对于两个开发人员来说它们应该是相同的。

Dockerfile中的VOLUME指令始终与构建上下文相关,因此如果需要,可以使用以下内容:

app:
    container_name: sup-dev
    build: ..
    dockerfile: build/Dockerfile

这样Dockerfile的构建上下文将是项目根目录。

答案 1 :(得分:0)

也许您应该将Dockerfile保留在项目的根目录下。然后你可以在Dockerfile中添加一条指令:

COPY ./ /usr/src/app/

或(不推荐用于产品)

VOLUME /usr/src/app

+(运行容器时的选项,因为我不知道docker-compose)

-v /path/to/your/code:/usr/src/app