繁体   English   中英

代码在 Dockerfile 中有效,但在 docker-compose.yml 中无效

[英]Code works in Dockerfile but not in docker-compose.yml

我必须 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/'

在您的 docker-compose.yml 中,您有两个command:条目:

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

根据 Docker 撰写文件版本 3 参考: https://docs.docker.com/compose/compose-file/

command:属性在运行时覆盖在指定入口点内运行的默认可执行文件。

只能有一个command ,并且您指定的第一个command表面上会导致其他command条目被忽略。

删除command: ''行,您的 Ansible 命令应该运行。 但是,它将是唯一运行的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM