未绑定到docker compose的文件
我正在运行一个未绑定到docker compose的文件,docker,docker-compose,Docker,Docker Compose,我正在运行一个docker compose测试;我的堆栈中执行实际测试的部分是以下服务 tester: image: tutum/curl:latest volumes: - ./ci/wait-for-it.sh:/usr/local/bin/wait-for-it.sh - ./webhooks:/app/webhooks depends_on: - sut command: ["wait-for-it.sh&
docker compose
测试;我的堆栈中执行实际测试的部分是以下服务
tester:
image: tutum/curl:latest
volumes:
- ./ci/wait-for-it.sh:/usr/local/bin/wait-for-it.sh
- ./webhooks:/app/webhooks
depends_on:
- sut
command: ["wait-for-it.sh", "sut:8080", "-t", "240", "--", "sh", "pytest /app/webhooks"]
命令失败,如下所示:
ERROR: for 0114c9206690_alerta-_tester_1 Cannot start service tester: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"wait-for-it.sh\": executable file not found in $PATH": unknown
ERROR: for tester Cannot start service tester: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"wait-for-it.sh\": executable file not found in $PATH": unknown
正在装入的文件不存在:
▶ ls docker-compose.test.yaml
docker-compose.test.yaml
Workspace/systems-utils/ alerta_dev_infra ✗ 1d ⚑ ◒
▶ ls ./ci/wait-for-it.sh
./ci/wait-for-it.sh
更重要的是,当尝试将挂载绑定到一个不存在的文件时,我没有得到与挂载相关的错误,而是得到了与上面相同的错误
tester:
image: tutum/curl:latest
volumes:
- ./ci/foofile.sh:/usr/local/bin/wait-for-it.sh
- ./webhooks:/app/webhooks
depends_on:
- sut
command: ["wait-for-it.sh", "sut:8080", "-t", "240", "--", "sh", "pytest /app/webhooks"]
我错过了什么
编辑:关于提到的路径
问题,这里是:
▶ docker run -it tutum/curl:latest printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=1f3090676fa0
TERM=xterm
HOME=/
更重要的是,tester
服务配置与项目中的完全相同,运行非常完美
关于权限问题:
Workspace/systems-utils/alerta-workable alerta_dev_infra ✗ 1d ⚑ ◒ ⍉
▶ ls -al ./ci/wait-for-it.sh
-rwxr-xr-x 1 pkaramol staff 5.1K Sep 6 22:02 ./ci/wait-for-it.sh
错误消息非常简单-
等待它。sh
不在$PATH上
您需要将/usr/local/bin
添加到$PATH或将命令更改为
command: ["/usr/local/bin/wait-for-it.sh", "sut:8080", "-t", "240", "--", "sh", "pytest /app/webhooks"]
另请参阅对此的公认答案,以了解
/usr/local/bin
可能不在路径中的原因。似乎无法在$path中找到“可执行文件”
因此,让我们尝试在/ci/wait it.sh
文件上设置可执行权限:
$ chmod +x ./ci/wait-for-it.sh
我已经更改了文件的权限,但仍然出现相同的错误up@pkaramol能否更新docker compose文件以显示其版本?
$ chmod +x ./ci/wait-for-it.sh