为什么docker-compose build无法运行命令而docker build可以运行命令?

时间:2019-08-08 10:54:33

标签: docker docker-compose

我的Dockerfile

FROM node:10 AS builder
RUN npm install multi-file-swagger -g
WORKDIR /usr/src/app
COPY swagger/* ./
ARG API_HOST
ENV APP_HOST=$API_HOST
RUN sed -i 's+replace_host+'"$API_HOST"'+g' index.yaml
RUN multi-file-swagger index.yaml > index.json

FROM golang:1.12
WORKDIR /go/src/app
COPY . .
RUN go get -d -v ./...
RUN go install -v ./...
VOLUME /go/src/app
EXPOSE 8080
COPY --from=builder /usr/src/app/ swagger/
CMD ["app"]

我的docker-compose.yml文件:

version: '3.4'
services:
  myapp:
    build:
      context: .
      args:
        - API_HOST=api.my-real-domain.com
    volumes:
      - ./:/go/src/app
    ports:
      - "8080:8080"

如果仅运行docker build

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

在午餐盒中,我发现index.json存在。

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

1 个答案:

答案 0 :(得分:1)

您使用以下方法覆盖app文件夹中的所有文件:

volumes:
  - ./:/go/src/app

您需要从volume删除compose部分

相关问题