如何修复 Docker 中的[entrypoint.sh:未找到]?

问题描述 投票:0回答:1

我在 Ubuntu 服务器中有一个 Django 项目文件和 Docker。 当我构建 docker 镜像时,它创建得很好。 但是当我打开这张图片时,出现了“python: 1: ./AA/entrypoint.sh: not find”错误。

我的

Dockerfile

FROM python:3.10.11

WORKDIR /usr/src/app/server
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN apt-get -y update \
        && apt-get install -y postgresql postgresql-contrib \
                libpq-dev \
                gcc \
                python3-dev \
                musl-dev

RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt

COPY . .

ENTRYPOINT ["sh", "-c", "./AA/entrypoint.sh"]

我的

entrypoint.sh

#!/bin/sh

if [ "$DATABASE" = "postgres" ]
then
        echo "Wating for postgres..."

        while ! nc -z $DB_HOST $DB_PORT; do
                sleep 0.1
        done

        echo "POSTGRESQL started"
fi

python manage.py flush --no-input
python manage.py migrate

exec "$@"

文件的结构是...

In /usr/src/app/server/AA/,
   -> Django projects by git clone
   -> Dockerfile
   -> docker-compose.yml
   -> entrypoint.sh

我在

Dockerfile
中尝试了这些代码,但都有相同的错误。

ENTRYPOINT ["entrypoint.sh"]
ENTRYPOINT ["sh", "-c", "./entrypoint.sh"]
ENTRYPOINT ["sh", "-c", "./AA/entrypoint.sh"]
ENTRYPOINT ["sh", "-c", "/usr/src/app/server/AA/entrypoint.sh"]
docker ubuntu docker-compose dockerfile
1个回答
0
投票

根据您的目录结构,文件最终在您的图像中为

./entrypoint.sh
,所以

ENTRYPOINT ["sh", "-c", "./entrypoint.sh"]

应该能找到。

通过添加来确保脚本被标记为可执行

RUN chmod +x entrypoint.sh

在 Dockerfile 中的

COPY . .
行之后

© www.soinside.com 2019 - 2024. All rights reserved.