我在 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"]
根据您的目录结构,文件最终在您的图像中为
./entrypoint.sh
,所以
ENTRYPOINT ["sh", "-c", "./entrypoint.sh"]
应该能找到。
通过添加来确保脚本被标记为可执行
RUN chmod +x entrypoint.sh
在 Dockerfile 中的
COPY . .
行之后