在docker-compose构builddocker-compose之后,运行旧的未更新的容器
我使用docker-compose并find以下问题:
当我改变我的代码,并希望重build我使用的docker工人
docker-compose stop docker-compose build
然后我想通过以下方式运行系统:
docker-compose up
但没有新版本的代码/容器运行,但旧的。 该怎么办?
我有一个辅助function来核实所有的东西,这样我们的连续等待,循环可以被testing,呃…不断地。 基本上归结为以下几点:
要清除容器:
docker rm -f $(docker ps -a -q)
要清除图像:
docker rmi -f $(docker images -a -q)
要清除卷:
docker volume rm $(docker volume ls -q)
清除networking:
docker network rm $(docker network ls | tail -n+2 | awk '{if($2 !~ /bridge|none|host/){ print $1 }}')
我通常不需要旧的容器,卷和networking,所以为了清除它们,我做了一个bash脚本,在每次构build之前运行它来清理docker环境。 而使用更新后的代码重builddocker,我使用docker-compose up --build
信贷给马塞尔夫斯克和从源头借来的
你可以使用docker-compose up --build
或者docker-compose up --build --force-recreate
在这种情况下,首先我们应该删除旧的容器(由rm -f
)。 所以我们可以通过以下方式部署新代
docker-compose build docker-compose stop docker-compose rm -f docker-compose up
上面的顺序并不是巧合 – 当第一个指令构build图像时,旧的图像正在运行 – 但是当build筑完成时,旧的容器被停止,删除,并由新build的一个交换。
我把上面的命令放在方便的复制粘贴oneliner:
docker-compose build && docker-compose stop && docker-compose rm -f && docker-compose up