【问题标题】:Docker Compose build command using Cache and not picking up changed files while copying to dockerDocker Compose 使用缓存构建命令并且在复制到 docker 时不拾取更改的文件
【发布时间】:2019-08-10 11:03:21
【问题描述】:

我有一个 docker-compose.yml 文件,其中包含两个服务(均基于 DockerFile)。我已经构建了一次映像(使用命令:docker-compose build),一旦我运行此命令(docker-compose up),它们就会启动并运行。
我必须更改用于其中一项服务的源代码,但是,当我重建图像 (docker-compose build) 时,一旦我运行服务 (docker-compose up),代码更改就不会反映出来。

docker-compose.yml

version: '2'

services:
  serviceOne:
    build:
      context: ./ServerOne
      args:
          PORT: 4000
    ports:
      - "4000:4000"
    env_file:
      - ./ServerOne/.env
    environment:
      - PORT=4000
  serviceTwo:
    build:
      context: ./serviceTwo
      args:
          PORT: 3000
    ports:
      - "3000:3000"
    env_file:
      - ./serviceTwo/.env
    environment:
      - PORT=3000
      - serviceOne_URL=http://serviceOne:4000/
    depends_on:
      - serviceOne  

serviceOne/DockerFile

FROM node:8.10.0

RUN mkdir -p /app
WORKDIR /app
ADD package.json package-lock.json /app/
RUN npm install
COPY . /app/
RUN npm build
EXPOSE ${ACC_PORT}
CMD [ "npm", "start" ]

serviceTwo/DockerFile

FROM node:8.10.0

RUN mkdir -p /app
WORKDIR /app
ADD package.json package-lock.json /app/
RUN npm install
COPY . /app/
RUN npm build
EXPOSE ${ACC_PORT}
CMD [ "npm", "start" ]

以下是docker-compose 第二次运行时的输出。
这是在运行 COPYnpm build 命令时再次使用缓存图像的一些方法。

如何更改 DockerFiledocker-compose 文件以便部署新的源代码?

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    您可以通过添加--no-cache option to the docker-compose build 来强制构建忽略缓存

    【讨论】:

    • 但这会降低性能(运行所有命令并为每个命令创建后续图像),还有其他方法吗?
    • 是的,构建会慢一点。但它会有最新的代码。
    猜你喜欢
    • 2021-10-15
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2020-12-10
    相关资源
    最近更新 更多