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

时间:2016-09-28 13:17:16

标签: docker docker-compose

我想在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

1 个答案:

答案 0 :(得分:1)

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

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

在您的情况下,您似乎已经在使用卷,因此只需更改版本并运行docker-compose up就可以执行您想要的操作。