将docker容器升级为docker-compose的一部分

我想在我的docker -compose文件中更新容器:例如从sharelatex 0.2到v0.3.10。 我怎样才能做到这一点,而不会失去其他容器及其数据? 如果更新失败,是否也可以创build当前容器的备份并切换回该容器?

我目前的docker压缩文件:

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 

您应该始终将任何重要的状态(数据)存储在一个卷中。 应始终将容器视为一次性使用,因此升级时将重新使用卷,并且不会丢失任何数据或状态。

默认情况下, docker-compose up将尝试重新使用任何现有的容器,只要其configuration没有改变。 如果您只更改一项服务,则其他服务容器将不会停止。

在你的情况,它看起来像你已经使用卷,所以只是改变版本和运行docker-compose up应该做你想做的。