我想在docker-compose文件中更新容器:例如。从sharelatex 0.2到v0.3.10。如何在不丢失其他容器及其数据的情况下执行此操作? 是否也可以创建当前容器的备份并在更新失败时切换回它?
我当前的docker-compse文件:
version: '2'
services:
sharelatex:
restart: always
image: sharelatex/sharelatex:0.20
container_name: sharelatex
depends_on:
- mongo
- redis
privileged: true
ports:
- 80:80
links:
- mongo
- redis
volumes:
- ~/sharelatex_data:/var/lib/sharelatex
environment:
SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
SHARELATEX_REDIS_HOST: redis
SHARELATEX_APP_NAME: 'Our ShareLaTeX'
mongo:
restart: always
image: mongo
container_name: mongo
expose:
- 27017
volumes:
- ~/mongo_data:/data/db
redis:
restart: always
image: redis
container_name: redis
expose:
- 6379
volumes:
- ~/redis_data:/data
答案 0 :(得分:1)
您应始终将任何重要状态(数据)存储在卷中。容器应始终被视为一次性容器,因此在升级时会重复使用卷,并且不会丢失任何数据或状态。
默认情况下,docker-compose up
将尝试重新使用任何现有容器,只要它们的配置没有更改即可。如果您只更改一项服务,则不会停止其他服务容器。
在您的情况下,您似乎已经在使用卷,因此只需更改版本并运行docker-compose up
就可以执行您想要的操作。