我的docker映像构建在Jenkins CI服务器上,并推送到我们的私有docker Registry。我的目标是使用docker-compose来提供环境,它总是启动映像的原始构建状态。
我目前在不同的机器上使用docker-compose 1.3.2和1.4.0,但我们以前也使用过较旧的版本。
我总是使用docker-compose pull && docker-compose up -d命令从注册表中获取新鲜图像并启动它们。我相信我最喜欢的行为是按照预期工作到某个时间点,但从那时起,docker-compose up开始重新运行以前停止的容器,而不是每次都启动最初构建的映像。
有没有办法摆脱这种行为?会不会是连接在docker-compose中的一种方式。Yml配置文件不依赖“不忘记”的命令行上的东西每次调用?
ps.除了想办法实现我的目标,我也很想多了解一下这种行为的背景。我认为Docker的基本思想是构建一个不可变的基础设施。docker-compose当前的行为似乎与这种方法明显冲突。还是我漏掉了什么?
docker-compose up—force- rebuild是一种选择,但如果你正在使用它进行CI,我会使用docker-compose rm -f开始构建,以停止并删除容器和卷(然后使用pull和up)。
这是我所使用的:
docker-compose rm -f
docker-compose pull
docker-compose up --build -d
# Run some tests
./tests
docker-compose stop -t 1
重新创建容器的原因是为了保存可能使用的任何数据量(而且它的生成速度也快得多)。
如果你在做CI,你不会想要那样,所以只要去掉所有东西就能得到你想要的。
更新:use up -build,这是在docker-compose 1.7中添加的
docker-compose up—force- rebuild是一种选择,但如果你正在使用它进行CI,我会使用docker-compose rm -f开始构建,以停止并删除容器和卷(然后使用pull和up)。
这是我所使用的:
docker-compose rm -f
docker-compose pull
docker-compose up --build -d
# Run some tests
./tests
docker-compose stop -t 1
重新创建容器的原因是为了保存可能使用的任何数据量(而且它的生成速度也快得多)。
如果你在做CI,你不会想要那样,所以只要去掉所有东西就能得到你想要的。
更新:use up -build,这是在docker-compose 1.7中添加的