docker - Docker Compose 使用缓存构建命令并且在复制到 docker 时不拾取更改的文件
问题描述
我有一个docker-compose.yml
包含两个服务的文件(都基于 DockerFile)。我已经构建了一次图像(使用命令docker-compose build
:),一旦我运行了这个命令(),它们就启动并运行了docker-compose up
。
我不得不更改用于其中一项服务的源代码,但是,当我重建图像 ( docker-compose build
) 时,一旦我运行服务 (),代码更改就不会反映出来docker-compose up
。
码头工人-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" ]
服务二/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
第二次运行时的输出。这是在运行COPY和npm build命令
时再次使用缓存图像的一些方法。
如何更改DockerFile或docker -compose文件以便部署新的源代码?
解决方案
您可以通过在 docker-compose 构建中添加 --no-cache 选项来强制构建忽略缓存
推荐阅读
- javascript - Javascript中if语句和Switch之间的不同结果
- c# - c#创建的md5sum和bash的区别
- angular - 如何在 Angular 应用中访问手机的通话记录?
- android - 如何为移动应用构建身份验证和授权 API?
- angular - node_modules/@auth0/angular-jwt/lib/jwtoptions.token.d.ts(2,50) 中的错误:
- css - 如何允许用户使用 css snap 向上滚动?
- ruby - Ruby - 如何向哈希添加条件键?
- ios - CoreData fetch - 内存泄漏
- log4j2 - 如何为非spring项目配置log4j2.xml
- android - 如何在颤振中验证和更新上一页的数据?