Код работает в Dockerfile, но не в docker-compose.yml - PullRequest
0 голосов
/ 18 октября 2019

У меня есть процедуры Docker: 1) Первый использует Dockerfile и делает docker build -t d1 ., а затем docker run -p 4022:22 d1 2) Второй использует файл docker-compose.yml, запускаемый командой docker-compose up

Первый работает, ошибок нет, второй не работает, команда ansible-galaxy, которая выполняет операции https git, никогда не происходит, но не показывает ошибок. Любая идея?

Содержимое Dockerfile

FROM myregistry.org/ansible-rhel:admin

COPY . /home/ansible/playbook-ldap-myapp
WORKDIR /home/ansible/playbook-ldap-myapp
USER ansible
RUN ansible-galaxy install -fr requirements.yml --roles-path roles/

Содержимое Docker-compose.yml

version: '3'

networks:
  public: {}

volumes:
  playbook:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: $PWD

services:
  ansible-admin:
    image: myregistry.org/ansible-rhel:admin
    ports:
      - '4022:22'
    networks:
      - public
    volumes:
      - playbook:/home/ansible/playbook-ldap-myapp
    working_dir: /home/ansible/playbook-ldap-myapp
    user: ansible
    command: ''
    command: 'ansible-galaxy install -fr requirements.yml --roles-path roles/'

1 Ответ

1 голос
/ 18 октября 2019

В вашем docker-compose.yml у вас есть две command: записи:

    command: ''
    command: 'ansible-galaxy install -fr requirements.yml --roles-path roles/'

В соответствии с ссылкой на версию 3 файла Docker Compose по адресу: https://docs.docker.com/compose/compose-file/

command:Атрибут переопределяет исполняемый файл по умолчанию, который выполняется в указанной точке входа во время выполнения.

Может быть только один command, и первый указанный вами command якобы вызывает игнорирование дополнительных записей command.

Удалите строку command: '', и ваша команда Ansible должна запуститься. Однако это будет единственное, что работает.

...