Не удается запустить контейнер nginx при использовании volumes (с использованием ansible и docker-compose)

#docker #nginx #docker-compose #ansible

#docker #nginx #docker-compose #ansible

Вопрос:

Я пытаюсь запустить контейнер nginx с помощью ansible с помощью docker-compose с одной машины на другую машину.

Всякий раз, когда я включаю nginx.conf в тома, возникает ошибка, которую я не понимаю. Контейнер только создается, но не запускается.

МАШИНА-1

Команда для запуска сборника воспроизведения: ansible-playbook -v nginx-playbook.yml -l ubuntu_node_1 -u root

мой сборник пьес:

 - name: nginx-docker_compose
  hosts: all
  gather_facts: yes
  become: yes
  tasks:
    - community.general.docker_compose:
        project_name: nginx
        definition:
          version: '2'
          services:
            web:
              image: nginx:latest
              volumes:
                - ./vars/nginx.conf:/etc/nginx/nginx.conf:ro
              ports:
                - "8080:80"
  

[ОТРЕДАКТИРОВАНО]

Вот ошибка:

 Using /etc/ansible/ansible.cfg as config file

PLAY [nginx-docker_compose] ********************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************
[DEPRECATION WARNING]: Distribution Ubuntu 18.04 on host 172.31.15.176 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior
Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [172.31.15.176]

TASK [community.general.docker_compose] ********************************************************************************************************************************
fatal: [172.31.15.176]: FAILED! => {"changed": false, "errors": [], "module_stderr": "Recreating nginx_web_1 ... nu001b[1Au001b[2KnRecreating nginx_web_1 ... nu001b[1B", "module_stdout": "", "msg": "Error starting project Encountered errors while bringing up the project."}

PLAY RECAP *************************************************************************************************************************************************************
172.31.15.176              : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

[root@ip-172-31-12-130 docker_server]# ansible-playbook -v nginx-playbook.yml -l ubuntu_node_1 -u root
Using /etc/ansible/ansible.cfg as config file

PLAY [nginx-docker_compose] ********************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************
[DEPRECATION WARNING]: Distribution Ubuntu 18.04 on host 172.31.15.176 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior
Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [172.31.15.176]

TASK [community.general.docker_compose] ********************************************************************************************************************************
fatal: [172.31.15.176]: FAILED! => {"changed": false, "errors": [], "module_stderr": "Recreating 9b102bbf98c2_nginx_web_1 ... nu001b[1Au001b[2KnRecreating 9b102bbf98c2_nginx_web_1 ... nu001b[1B", "module_stdout": "", "msg": "Error starting project Encountered errors while bringing up the project."}

PLAY RECAP *************************************************************************************************************************************************************
172.31.15.176              : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

  

ПРИМЕЧАНИЕ: Когда я пытаюсь запустить контейнер nginx напрямую с помощью docker-compose с той же конфигурацией на КОМПЬЮТЕРЕ-2, это работает.
Я полагаю, что при попытке выполнить playbook с МАШИНЫ-1 на МАШИНУ-2 возникают некоторые проблемы с разрешениями, но я не могу понять это.

Комментарии:

1. Имейте в виду, что, если у вас нет ./vars/nginx.conf скопированного файла в рабочий каталог на целевом компьютере, это не приведет к ожидаемому результату; то, что файл существует в вашем сборнике воспроизведения, не означает, что он существует на целевом хосте, не помещая его туда (фактически, наилучший возможный результат — это полный путь длямонтирование тома из-за способа работы docker)

2. @mdaniel Спасибо за эту недостающую информацию. Теперь это работает. Что я изменил: 1. Я записал весь каталог в playbook- /home/some_more_folders/nginx.conf 2. и скопировал тот же файл с той же структурой каталогов на целевой компьютер. Не могли бы вы сказать мне, где эта информация задокументирована на странице ansible или docker? А также, есть идеи, почему необходимо копировать любой файл на конечный компьютер (например, nginx.conf)?

Ответ №1:

Теперь это работает. Спасибо @mdaniel.

Что я изменил:

  1. Я записал весь каталог в playbook- /home/some_more_folders/nginx.conf

  2. и скопировал тот же файл с той же структурой каталогов на целевом компьютере.

Все еще открытые вопросы:

  1. Есть идеи, почему необходимо копировать любой файл на конечный компьютер (например, nginx.conf)?

  2. Как автоматизировать этот ручной процесс копирования файлов конфигурации на конечный компьютер для docker-compose?