首页 > 解决方案 > 如果挂载的文件已更改,如何强制 Ansible 重新创建 docker 容器

问题描述

我正在尝试让 Ansible 重新创建现有的 docker 容器,以防已安装的文件之一发生更改。在我使用compose 文件docker_container部署它之前,我尝试使用它来删除容器(如果它存在并且任何文件已更改)。docker_stack这是代码:

- name: Template configuration files to destination
  template:
    ...
  loop:
    ...
  register: template_files_result

- name: Get docker container name
  shell: "docker ps -f 'name=some_name' -q"
  register: container_id

- name: Remove container
  docker_container:
    name: container_id.stdout
    force_kill: yes
    state: absent
  vars:
    files_changed: "{{ template_files_result | json_query('results[*].changed') }}"
  when: container_id.stdout and files_changed is any

- name: Deploy
  docker_stack:
    state: present
    name: stack_name
    compose:
      - "compose.yml"
    with_registry_auth: true

但是,该Remove container任务从不做任何事情,我不知道为什么。

我错过了什么?

标签: dockeransible

解决方案


推荐阅读