Docker 不同用户的音量

Docker VOLUME for different users

我正在使用 docker 和 docker-compose 构建我的应用程序。 github.

上托管的项目现在有两名开发人员

我们的项目结构是:

现在我们有 ./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

一切正常,但由于 OS 不同,我们的代码在不同的地方:/home/aliance/www/project 对我,/home/user/other/path/project 对第二个开发人员。所以我不能只将音量指令添加到 Dockerfile.

现在我们用这种错误的方式来解决这个问题: - 我将 lsyncd 与我的个人配置一起使用,将文件传输到容器中 - 虽然第二个使用 volume 指令进入 Dockerfile 但没有提交它。

也许你知道我如何为 docker-compose 编写一个统一的 Dockerfile 以将代码从不同的路径输出到应用程序容器中?

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

COPY ./ /usr/src/app/

或(产品中不推荐)

VOLUME /usr/src/app

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

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

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

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

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

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

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