Nginx не запускается из bash, выдавая странную ошибку, как исправить?
Собираю flask-приложение, в ENTRYPOINT указываю bash-скрипт для запуска nginx (для обратного прокси, чтобы на сайт можно было заходить через 80 порт) и gunicorn. Вот Dockerfile:
FROM python:3.10.5-alpine
RUN adduser -D jshrt
WORKDIR /home/jshrt
COPY requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install -r requirements.txt
RUN venv/bin/pip install gunicorn
COPY app app
COPY migrations migrations
COPY jshrt.py config.py boot.sh ./
RUN chmod +x boot.sh
ENV FLASK_APP jshrt.py
RUN chown -R jshrt:jshrt ./
RUN apk add nginx
COPY nginx.conf /etc/nginx/nginx.conf
USER jshrt
EXPOSE 8080
ENTRYPOINT ["./boot.sh"]
вот boot.sh:
#!/bin/sh
source venv/bin/activate
flask db upgrade
source nginx
exec gunicorn -b 127.0.0.1:8080 jshrt:app
Вот также кастомный файл конфигурации для nginx:
http {
server {
listen 80;
server_name jshrt.ru;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
}
При запуске с помощью команды docker run -p 8080:8080 jshrt-2:latest контейнер останавливается с такой ошибкой:
./boot.sh: /usr/sbin/nginx: line 1: ⌂ELF☻☺☺♥: not found
./boot.sh: /usr/sbin/nginx: line 2: �: not found
./boot.sh: /usr/sbin/nginx: line 3: �: not found
./boot.sh: /usr/sbin/nginx: line 3: syntax error: unterminated quoted string
Почему так происходит?
Источник: Stack Overflow на русском