Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 启动容器进程导致“错误”;执行官:\"/boot.sh\";:“拒绝许可”:未知的_Docker_Docker Compose - Fatal编程技术网

Docker 启动容器进程导致“错误”;执行官:\"/boot.sh\";:“拒绝许可”:未知的

Docker 启动容器进程导致“错误”;执行官:\"/boot.sh\";:“拒绝许可”:未知的,docker,docker-compose,Docker,Docker Compose,有一个back.Dockerfile FROM python:3.9 WORKDIR /src COPY . ./ RUN apt-get update -y RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt RUN chmod +x boot.sh ENTRYPOINT ["./boot.sh"] version: "3&quo

有一个back.Dockerfile

FROM python:3.9

WORKDIR /src

COPY . ./

RUN apt-get update -y

RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt

RUN chmod +x boot.sh
ENTRYPOINT ["./boot.sh"]
version: "3"

services:
  backend:
    build:
      context: .
      dockerfile: deploy/back.Dockerfile
    volumes:
      - .:/src
    ports:
      - 8888:8000
    depends_on:
      - db
  db:
    image: mysql:8.0.24
    ports:
      - '3307:3306'
    environment:
      MYSQL_DATABASE: ${MYSQL_NAME}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASS}
      MYSQL_ROOT_PASSWORD: ${MYSQL_NAME}
    volumes:
      - /var/lib/vennepriser-db:/var/lib/mysql
有一个boot.sh,我在其中为Django进行迁移,然后启动服务

#!/bin/sh
while true; do
    python /src/manage.py migrate
    if [[ "$?" == "0" ]]; then
        break
    fi
    echo Upgrade command failed, retrying in 5 secs...
    sleep 5
done

exec python /src/manage.py runserver 0.0.0.0:8000
有一个docker compose

FROM python:3.9

WORKDIR /src

COPY . ./

RUN apt-get update -y

RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt

RUN chmod +x boot.sh
ENTRYPOINT ["./boot.sh"]
version: "3"

services:
  backend:
    build:
      context: .
      dockerfile: deploy/back.Dockerfile
    volumes:
      - .:/src
    ports:
      - 8888:8000
    depends_on:
      - db
  db:
    image: mysql:8.0.24
    ports:
      - '3307:3306'
    environment:
      MYSQL_DATABASE: ${MYSQL_NAME}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASS}
      MYSQL_ROOT_PASSWORD: ${MYSQL_NAME}
    volumes:
      - /var/lib/vennepriser-db:/var/lib/mysql
当我运行
sudocker compose up
时,我得到了错误

我也尝试过这样的选择

  • ENTRYPOINT[“/boot.sh”]
  • ENTRYPOINT[“/src/boot.sh”]

如何修复它?

删除
后端
容器中
docker compose.yml
文件的
卷:

当您有一个
volumes:
块将主机系统代码注入到这样的容器中时,它会完全替换映像中相应路径中的任何内容。如果您对Dockerfile中的映像文件系统进行了更改(如
运行chmod
),但随后在其上装载了一些内容,那么这些更改将被隐藏


这种设置的典型动机是在容器设置中对代码进行主动开发。您可以使用混合Docker/host设置来实现这一点:使用Compose来启动数据库等依赖项,但使用普通的主机开发环境(例如Python虚拟环境)来构建代码。您需要确保有一个合理的配置系统来调整数据库位置之类的东西,这在不同的环境中是不同的(
localhost:3307
在基于主机的开发中,
db:3306
在纯容器环境中)。

Thnx。我得到错误
无法启动服务后端:OCI运行时创建失败:container\u linux.go:349:启动容器进程导致“exec:\“boot.sh\”:可执行文件未在$PATH中找到:未知
在Dockerfile中,正如您在问题中引用的,它尝试运行
boot.sh
,在
$PATH
上查找它。问题标题中的错误将尝试运行
/boot.sh