Docker 启动容器进程导致“错误”;执行官:\"/boot.sh\";:“拒绝许可”:未知的
有一个back.DockerfileDocker 启动容器进程导致“错误”;执行官:\"/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
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
。