我正在尝试使用“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”启动容器,如果这有助于任何。
答案 0 :(得分:1)
如果在运行时未找到wait-for-it.sh
,那么我怀疑wait-for-it.sh
不在您的泊坞窗图片中。
您可以使用Dockerfile中的ADD指令将此文件添加到图像
ADD wait-for-it.sh /wait-for-it.sh