docker-compose:无法从yaml文件执行命令

时间:2017-12-27 21:28:58

标签: docker docker-compose dockerfile

我正在尝试使用“command:”在docker-compose.yaml文件中执行wait-for-it.sh脚本。我也尝试过甚至执行ls命令。他们都导致找不到命令。但是,如果我进入命令行,我可以运行这两个命令。

这是docker-compose.yaml文件:

  rabbitmq:
     container_name: "myapp_rabbitmq"
     tty: true
     image: rabbitmq:management
     ports:
       - 15672:15672
       - 15671:15671
       - 5672:5672
     volumes:
       - /rabbitmq/lib:/var/lib/rabbitmq
       - /rabbitmq/log:/var/log/rabbitmq
       - /rabbitmq/conf:/etc/rabbitmq/
  service1:
     container_name: "service1"
     build:
       context: .
       dockerfile: ./service1.dockerfile
     links:
       - mongo
       - rabbitmq
     depends_on:
       - mongo
       - rabbitmq
     command: ["./wait-for-it.sh", "rabbitmq:5672", "-t", "90"]
  service2:
     container_name: "service2"
     build:
       context: .
       dockerfile: ./service2.dockerfile
     links:
       - mongo
       - rabbitmq
     depends_on:
       - mongo
       - rabbitmq
     command: ["./wait-for-it.sh", "rabbitmq:5672", "-t", "90"]

由于命令在命令行中起作用,而不是来自docker-compose文件,导致这种情况的原因是什么?我正在使用“docker-compose up -d”启动容器,如果这有助于任何。

1 个答案:

答案 0 :(得分:1)

如果在运行时未找到wait-for-it.sh,那么我怀疑wait-for-it.sh不在您的泊坞窗图片中。

您可以使用Dockerfile中的ADD指令将此文件添加到图像

ADD wait-for-it.sh /wait-for-it.sh