如何使用Docker Compose设置Dockerfile的“当前”目录?

我有以下项目结构:

. .. project/ docker/cli/Dockerfile docker-compose.yml 

docker-compose.yml我有以下configuration:

 cli: build: docker/cli 

和我的Dockerfile中的某个地方:

 COPY . /app 

现在的问题是,当我做docker-compose build clidocker工人复制我的图像中的docker/cli/ in /app的内容。 这是有道理的,因为那是我的docker/cli/Dockerfile的相对path。 有没有办法告诉我docker-compose.ymlconfigurationpath应该是不同的(即我的项目的实际项目文件的根目录)?

您可以在docker-compose文件中使用build指令的context属性。

 version: '2' services: cli: build: context: . dockerfile: docker/cli/Dockerfile 

这应该按需要工作。 context是发送到Docker守护进程的内容。 尽pipe如此,您还需要在project目录中包含一个.dockerignore文件,以确保只发送您所需要的内容。