Приложение Dockerized Django - `gunicorn: команда не найдена в развертывании AWS

У меня есть приложение Django, которое развернуто на экземпляре AWS T3A.MICRO EC2 - после некоторых недавних обновлений для изображений Debian и Postgresql, которые я использую в DockerFile, приложение внезапно не начинает успешно работать, когда он попадает в AWS из -за проблемы с gunicorn - <

1
pyenv: gunicorn: command not found

Эта проблема не возникла ранее, и, если я просто развертываю сборку на основе предыдущего коммита GIT (перед тем, как делать эти обновления), приложение развертывает и работает просто отлично. Кроме того, когда я запускаю приложение локально через docker-compose up и вмешиваться в контейнер, я могу запустить gunicorn Команды без проблем, поэтому я не совсем уверен, в чем проблема - gunicorn включена в requirements.txt.

Может быть, мне нужно будет предоставить больше информации, но для начала, вот текущая настройка Dockerfile и requirements.txt Файлы - я отмечу изменения, которые были сделаны под ними -

>

Dockerfile

FROM andrejreznik/python-gdal:py3.11.10-gdal3.6.2
ENV PYTHONUNBUFFERED 1

RUN pip install --upgrade pip
RUN apt-get update 
RUN apt-get upgrade -y 

RUN apt-get install postgresql-15 postgresql-server-dev-15 -y

RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

ARG ALLOWED_HOSTS
ARG AWS_ACCESS_KEY_ID
ARG AWS_S3_CUSTOM_DOMAIN
ARG AWS_SECRET_ACCESS_KEY
ARG AWS_STORAGE_BUCKET_NAME
ARG AWS_SES_ACCESS_KEY_ID
ARG AWS_SES_SECRET_ACCESS_KEY
ARG CORS_ALLOWED_ORIGINS
ARG DATABASE_HOST
ARG DATABASE_NAME
ARG DATABASE_PASSWORD
ARG DATABASE_PORT
ARG DATABASE_USER
ARG SECRET_KEY

ENV ALLOWED_HOSTS=${ALLOWED_HOSTS}
ENV AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
ENV AWS_S3_CUSTOM_DOMAIN=${AWS_S3_CUSTOM_DOMAIN}
ENV AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
ENV AWS_STORAGE_BUCKET_NAME=${AWS_STORAGE_BUCKET_NAME}
ENV AWS_SES_ACCESS_KEY_ID=${AWS_SES_ACCESS_KEY_ID}
ENV AWS_SES_SECRET_ACCESS_KEY=${AWS_SES_SECRET_ACCESS_KEY}
ENV CORS_ALLOWED_ORIGINS=${CORS_ALLOWED_ORIGINS}
ENV DATABASE_HOST=${DATABASE_HOST}
ENV DATABASE_NAME=${DATABASE_NAME}
ENV DATABASE_PASSWORD=${DATABASE_PASSWORD}
ENV DATABASE_PORT=${DATABASE_PORT}
ENV DATABASE_USER=${DATABASE_USER}
ENV SECRET_KEY=${SECRET_KEY}

EXPOSE 8000

RUN ["python", "manage.py", "collectstatic", "--noinput"]
RUN ["python", "manage.py", "migrate"]

CMD ["gunicorn", "--workers=4", "--bind=:8000", "my_app_backend.wsgi"]

requirements.txt

boto3==1.16.18
django==3.1
django-ckeditor==6.0.0
django-cors-headers==3.5.0
django-filter==2.4.0
django-import-export>=2.5.0
django-ses==1.0.3
django-simple-history==2.11.0
django-storages==1.10.1
djangorestframework==3.11.1
djangorestframework-gis==0.16
dj-database-url==0.5.0
gunicorn==20.0.4
Pillow==7.2.0
psycopg2-binary==2.9.10
mysql-connector-python>=8.0.21
timezonefinder>=4.2.0
pytz>=2020.1

Между последним рабочим выпуском и этим я сделал следующие изменения в Dockerfile -

  • Обновленная версия Debian от FROM andrejreznik/python-gdal:stable до FROM andrejreznik/python-gdal:py3.11.10-gdal3.6.2
  • Добавлено явную версию PostgreSQL через RUN apt-get install postgresql-15 postgresql-server-dev-15 -y

и в requirements.txt -

  • Обновлено psycopg2 Зависимость от psycopg2==2.8.5 до psycopg2-binary==2.9.10

Помимо этих изменений, эти файлы точно такие же.

До сих пор я экспериментировал с различными комбинациями явного добавления gunicorn к Dockerfile через

RUN apt-get install gunicorn -y

и обновление gunicorn В requirements.txt к последней версии, но ничего не помогло. По какой -то причине команда gunicorn не становится доступной в развернутой среде, но я не понимаю, почему.

Дайте мне знать, если есть какая -либо другая информация, которую я могу предоставить, которая поможет диагностировать/решить эту проблему.

Try to debug installation of gunicorn. In example add the following lines to your dockerfile and send the result log here

whereis gunicorn
which gunicorn
dpkg --get-selections | grep '^g'
pip list | grep '^g'
Вернуться на верх