docker compose can';t load run.sh

docker compose can';t load run.sh,docker,docker-compose,Docker,Docker Compose,我有一个docker-compose.yml文件,它运行一个shell脚本,一直运行良好,直到突然出现以下问题: ERROR: for pol_app_1 Cannot start service app: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"run.sh\": executable file not found in $PATH": unkn

我有一个docker-compose.yml文件,它运行一个shell脚本,一直运行良好,直到突然出现以下问题:

ERROR: for pol_app_1  Cannot start service app: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"run.sh\": executable file not found in $PATH": unknown

ERROR: for app  Cannot start service app: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"run.sh\": executable file not found in $PATH": unknown
(我见过类似的问题,但它们没有解决这个具体问题)

我所做的唯一更改是它使用的docker图像,但即使我将图像更改为简单的
centos:latest
docker compose,仍然会出现上述错误

My docker-compose.yml文件:

  version: '3.5'

  services:
    app:
      image: paulhollyer/phoenix:1.4.9
      ports:
        - 4000:4000
      volumes:
        - .:/app

      depends_on:
        - db

      command: run.sh

    db:
      image: paulhollyer/postgres:12
      command: 'postgres -c "max_connections=200"'
      volumes:
        - type: volume
          source: postgres-data
          target: /var/lib/postgresql/data
          volume:
            nocopy: true
      restart: always
      environment:
        POSTGRES_PASSWORD: "postgres"
        POSTGRES_USER: "postgres"
        POSTGRES_DB: "pol_dev"

  volumes:
    postgres-data:
run.sh
位于项目根目录中的
docker compose.yml
旁边

有人知道为什么找不到
run.sh
?我可能无意中做了什么导致了这种情况


谢谢

您必须根据它在容器中的位置来参考它。由于文件位于您当前的主机目录中,并且您正在添加一个卷
:app
,该卷将是
/app/run.sh

command: /app/run.sh
注意避免奇怪的问题:如果
/app
恰好是拉取图像的
WORKDIR
,则
命令:./run.sh
也可以工作,但要小心。例如,如果是这种情况,很可能
/app
中已经有一些文件,而您的映射会将当前的主机目录挂载在它们上面,使它们无法访问