/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 有效):

此时我不确定还能尝试什么。有什么想法吗?

编辑

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