为什么docker compose build不能运行命令,但docker build可以?

为什么docker compose build不能运行命令,但docker build可以?,docker,docker-compose,Docker,Docker Compose,我的Dockerfile: My docker-compose.yml文件: 如果仅运行docker build: 它可以运行以下命令: RUN sed -i 's+replace_host+'"$API_HOST"'+g' index.yaml RUN multi-file-swagger index.yaml > index.json 当我打开容器时,我可以发现index.json存在 但是如果使用docker compose build和docker compose up,则检查容

我的Dockerfile:

My docker-compose.yml文件:

如果仅运行docker build:

它可以运行以下命令:

RUN sed -i 's+replace_host+'"$API_HOST"'+g' index.yaml
RUN multi-file-swagger index.yaml > index.json
当我打开容器时,我可以发现index.json存在


但是如果使用docker compose build和docker compose up,则检查容器中的index.json,找不到它。

您可以使用以下命令覆盖应用程序文件夹中的所有文件:

volumes:
  - ./:/go/src/app
您需要从compose中删除volume部分

Dockerfile中的卷也没有任何作用,我强烈建议将其删除。它的两个最明显的效果是防止以后运行的命令在docker运行容器时工作和泄漏匿名卷;这与是否可以像这样隐藏图像内容无关。
docker build -t myapp . --build-arg API_HOST=api.my-real-domain.com
RUN sed -i 's+replace_host+'"$API_HOST"'+g' index.yaml
RUN multi-file-swagger index.yaml > index.json
volumes:
  - ./:/go/src/app