我正在使用docker-compose使用以下docker-compose.yaml启动2个容器。

version: '2.4'

services:
  myservice1:
    container_name: mycontainername
    build: 
       context: .
       dockerfile: ./my-dockerfolder/Dockerfile
       args:       
       - MY_ARG=${MY_ARG}
    environment: 
       - MY_ARG=${MY_ARG}
    mem_limit: 3500M
    ports:
    - "9090:9090"
    extra_hosts:
    - "one.mydomain.net:127.0.0.1"
    - "two.mydomain.net:127.0.0.1"


  myservice2:
    container_name: myothercontainername
    build: 
       context: .
       dockerfile: ./other-dockerfolder/Dockerfile
       args: 
       - BUILD=${BUILD}
       - MY_ARG=${MY_ARG2}
    environment: 
       - MY_ARG2=${MY_ARG2}
    ports:
    - "2023:22"


我的问题是当我再次运行docker-compose时,它正在使用相同的映像创建容器,而不管docker文件是否更改。

如何强制其将对docker文件的更改考虑在内?我需要担心的其他docker对象被重用了吗?我希望第二次运行docker-compose像第一次一样干净。

注意:我不想删除不需要删除的图像。我与docker repo的连接速度很慢,删除所有图像会使docker组成大约需要22分钟。

#1 楼

为什么不docker-compose build

https://docs.docker.com/compose/reference/build/

您还可以执行docker-compose up --build强制进行重建。

评论


同样值得注意的是,即使您每次构建,Docker的内置缓存也意味着仅当您更改Dockerfile或您要复制的任何文件时,才会重新构建映像。

–user2640621
18-10-14在20:15



#2 楼

使用此命令:

docker-compose up --build


#3 楼

我发现有时如果部署不当,需要docker-compose build --no-cache