代码在Dockerfile中工作,但在docker-compose.yml中不工作

代码在Dockerfile中工作,但在docker-compose.yml中不工作,docker,docker-compose,ansible,dockerfile,Docker,Docker Compose,Ansible,Dockerfile,我必须遵守docker程序: 1第一个使用docker文件,docker构建-t d1。然后docker运行-p 4022:22 d1 2第二个使用docker-compose.yml文件,由docker compose up命令启动 第一个有效,没有错误,第二个失败,命令ansible galaxy wich执行https git操作从未发生,但没有显示错误。 有什么想法吗 Dockerfile内容 FROM myregistry.org/ansible-rhel:admin COPY .

我必须遵守docker程序: 1第一个使用docker文件,docker构建-t d1。然后docker运行-p 4022:22 d1 2第二个使用docker-compose.yml文件,由docker compose up命令启动

第一个有效,没有错误,第二个失败,命令ansible galaxy wich执行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中,有两个命令项:

根据Docker Compose文件版本3参考,位于:

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

只能有一个命令,您指定的第一个命令表面上会导致忽略其他命令项


删除命令行,您的Ansible命令就会运行。但是,它将是唯一运行的东西。

是否尝试使用不同的服务名称?两个命令行:可能与您的问题相关;尝试删除空的一个。您的卷:mount隐藏了该目录中的所有内容,您的Dockerfile基本上没有任何效果。我更喜欢Dockerfile路径。您可能会发现,在非Docker Python虚拟环境中运行Ansible比像这样将其塞进Docker更容易lot@DavidMaze我不知道你所说的非Docker Python env是什么意思。我是一个ansible noob,我刚刚写了两个角色,用Molecular测试,这是我的第一本剧本。分配给我的任务是在一堆服务器上测试一个剧本,这些服务器几乎与生产服务器相同,这意味着一个ansible管理员、两个ansible目标、一个ldap客户端。没有Docker我怎么能做到?我试图在docker compose文件中构建这些服务器,以运行整个系统。如果你知道另一个不用Docker运行它的解决方案,我很感兴趣。关于它有很多文档。在本地系统上,您可以只安装Ansible,而不需要Docker。有Ansible tasks模块可以管理Docker容器或在远程系统上启动Docker compose。真正的唯一要求是,您可以从本地系统到正在管理的主机建立出站连接,并且远程系统具有Python。
    command: ''
    command: 'ansible-galaxy install -fr requirements.yml --roles-path roles/'