【问题标题】:Docker stack doesn't update container data by tagDocker 堆栈不按标签更新容器数据
【发布时间】:2020-10-04 16:57:18
【问题描述】:

我正在尝试使用 docker stack 设置零停机时间部署。我成功地在服务器上运行了所有东西,但是当我尝试使用新标签更新现有堆栈时,容器中的数据不会改变。没有错误发生并且 docker stack ps 输出使用新图像的信息。尝试通过 docker system prune 删除堆栈、容器、图像和清除缓存,但它不起作用。只有在创建具有唯一名称的新堆栈或删除 /var/lib/docker 文件夹时,我才能看到新数据。而且,如果我尝试通过 docker run 运行图像,将会有实际数据。 一般来说,一切看起来都好像有某种 docker stack 的缓存,但我不知道它在哪里......

docker-compose.deploy.yml

version: '3.7'
...
php-fpm:
    image: registry.com/web/idm/php-fpm:${IMAGES_TAG}
    depends_on:
      - database
      - redis
    deploy:
      update_config:
        order: start-first
        failure_action: rollback
        delay: 10s
      rollback_config:
        parallelism: 0
        order: stop-first
      restart_policy:
        condition: any
        delay: 5s
        max_attempts: 3
        window: 120s
    volumes:
      - php_files:/var/www
    networks:
      - acs_back

在运行器上部署脚本

env $( cat .env | grep ^[A-Z] | xargs) IMAGES_TAG=${CI_PIPELINE_ID} docker-compose build --pull
IMAGES_TAG=${CI_PIPELINE_ID} docker-compose push

在服务器上部署脚本

docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY} && \
env \$(cat $DEPLOY_PATH/env.file | grep ^[A-Z] | xargs) IMAGES_TAG=${CI_PIPELINE_ID} docker-compose -f $ACTUAL_PATH/docker-compose.deploy.yml pull && \ # Without it sometimes throw errors "unable find image..."
env \$(cat $DEPLOY_PATH/env.file | grep ^[A-Z] | xargs) IMAGES_TAG=${CI_PIPELINE_ID} docker stack deploy -c $ACTUAL_PATH/docker-compose.deploy.yml access-control --with-registry-auth

感谢您的帮助!

【问题讨论】:

    标签: docker docker-swarm docker-swarm-mode docker-stack


    【解决方案1】:

    您必须使用 --no-cache 选项或 --build 选项作为 up 命令可用的选项:

    docker-compose up --build

    这将确保图像是从头开始构建的并且不使用缓存。

    【讨论】:

    • 感谢您的回答!图像有 100% 更新的数据, docker-compose up --build 没有意义。问题出在 docker 堆栈级别。
    【解决方案2】:

    我发现了问题所在。我在 php-fpmnginx - php_files 之间创建了一个挂载卷。显然,因为服务是一一更新的,所以挂载的目录从来没有更新过。 通过删除共享目录,单独上传文件到nginx,问题就不再出现了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 2019-04-10
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      相关资源
      最近更新 更多