/entrypoint.sh: line 8: syntax error: unexpected end of file
/entrypoint.sh: line 8: syntax error: unexpected end of file
Docker 项目是在 Linux 机器上创建的,我是 运行 windows,我无法让 docker-compose up
工作。我已经通读了 Whosebug 的答案,到目前为止我已经尝试了以下方法(none 有效):
- 使用 Visual Studio 我保存为“LF”而不是 CRLF 的代码
- 完全删除了文件,使用Visual Studio代码创建了一个新文件,输入了文字
- 剪切整个文件,将其粘贴到记事本中,以便清除格式,复制并粘贴回去
- 在
entrypoint.sh
的开头添加了各种形式的 #!/bin/bash
- 已将 Docker 文件更改为使用 COPY 而不是 ADD
此时我不确定还能尝试什么。有什么想法吗?
编辑
entrypoint.sh
if [ "" == 'celery' ]; then
celery -A vicmun worker -l info --uid=celery --gid=celery
else
./../wait_for_it.sh db:5433 --timeout=10
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
fi
Docker文件
FROM python:3.9
ENV PYTHONUNBUFFERED 1
ARG APP_ENV=${APP_ENV}
RUN mkdir /src
RUN mkdir /static
WORKDIR /src
ADD ./src /src
ADD entrypoint-${APP_ENV}.sh /entrypoint.sh
ADD wait_for_it.sh /wait_for_it.sh
RUN addgroup --system celery && adduser --system --ingroup celery celery
RUN ["chmod", "+x", "/wait_for_it.sh"]
RUN apt-get -y update
RUN apt-get -y install ffmpeg
RUN pip install -r requirements.txt
ENTRYPOINT ["bash", "/entrypoint.sh"]
我不知道你的配置,但我可以通过在 CMD 中添加来解决这个问题。
在我的例子中,我可以使用 docker 执行一个脚本,如下所示:
Dockerfile
FROM python:3.10-alpine3.15
ENV PYTHONUNBUFFERED=1
WORKDIR /app
RUN apk update \
&& apk add --no-cache gcc musl-dev postgresql-dev python3-dev libffi-dev \
&& pip install --upgrade pip
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
COPY . .
CMD [ "sh", "entrypoint.sh" ]
entrypoint.sh
#!/bin/sh
python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
好吧,我对此感到畏缩。原来解决方案是我已经完成的,但是直到我用 --no-cache 选项重建它才成功。
解决方案是:
- 使用 Visual Studio 我保存为“LF”而不是 CRLF 的代码
- 和运行
docker-compose build --no-cache
Docker 项目是在 Linux 机器上创建的,我是 运行 windows,我无法让 docker-compose up
工作。我已经通读了 Whosebug 的答案,到目前为止我已经尝试了以下方法(none 有效):
- 使用 Visual Studio 我保存为“LF”而不是 CRLF 的代码
- 完全删除了文件,使用Visual Studio代码创建了一个新文件,输入了文字
- 剪切整个文件,将其粘贴到记事本中,以便清除格式,复制并粘贴回去
- 在
entrypoint.sh
的开头添加了各种形式的 - 已将 Docker 文件更改为使用 COPY 而不是 ADD
#!/bin/bash
此时我不确定还能尝试什么。有什么想法吗?
编辑
entrypoint.sh
if [ "" == 'celery' ]; then
celery -A vicmun worker -l info --uid=celery --gid=celery
else
./../wait_for_it.sh db:5433 --timeout=10
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
fi
Docker文件
FROM python:3.9
ENV PYTHONUNBUFFERED 1
ARG APP_ENV=${APP_ENV}
RUN mkdir /src
RUN mkdir /static
WORKDIR /src
ADD ./src /src
ADD entrypoint-${APP_ENV}.sh /entrypoint.sh
ADD wait_for_it.sh /wait_for_it.sh
RUN addgroup --system celery && adduser --system --ingroup celery celery
RUN ["chmod", "+x", "/wait_for_it.sh"]
RUN apt-get -y update
RUN apt-get -y install ffmpeg
RUN pip install -r requirements.txt
ENTRYPOINT ["bash", "/entrypoint.sh"]
我不知道你的配置,但我可以通过在 CMD 中添加来解决这个问题。
在我的例子中,我可以使用 docker 执行一个脚本,如下所示:
Dockerfile
FROM python:3.10-alpine3.15
ENV PYTHONUNBUFFERED=1
WORKDIR /app
RUN apk update \
&& apk add --no-cache gcc musl-dev postgresql-dev python3-dev libffi-dev \
&& pip install --upgrade pip
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
COPY . .
CMD [ "sh", "entrypoint.sh" ]
entrypoint.sh
#!/bin/sh
python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
好吧,我对此感到畏缩。原来解决方案是我已经完成的,但是直到我用 --no-cache 选项重建它才成功。
解决方案是:
- 使用 Visual Studio 我保存为“LF”而不是 CRLF 的代码
- 和运行
docker-compose build --no-cache