docker compose:无法从yaml文件执行命令
我正在尝试使用“command:”在docker-compose.yaml文件中执行wait-for-it.sh脚本。我甚至还尝试执行ls命令。它们都导致找不到命令。但是,如果我转到命令行,我可以同时运行这两个命令 以下是docker-compose.yaml文件:docker compose:无法从yaml文件执行命令,docker,docker-compose,dockerfile,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:
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”启动容器,如果有帮助的话。如果运行时未找到
等待它。sh
,则我怀疑等待它。sh
不在docker映像中
您可以使用Dockerfile中的说明将此文件添加到映像中
添加wait-for-it.sh/wait.sh
不确定您的目录是什么样子,但是您引用了/service1.dockerfile
和/service2/dockerfile
,这看起来很奇怪,一个路径中有一个dockerfile,另一个作为扩展名为.docker
的文件。斜杠应该是一个点。一个V1编组文件被表示为链接,请考虑更新到至少V2,使用网络而不是链接。您正在运行哪个命令成功?不清楚您是否在由同一映像构建的容器中运行它。我的意思是,如果从终端控制台运行,命令会起作用。您需要首先使用卷将/wait-It.sh脚本装载到容器中。