Я пытался развернуть приложение Django на Lightsail с помощью Gunicorn, NginX и Docker. Я просмотрел несколько руководств, но все безуспешно. Я не знаком с большинством концепций и в значительной степени следую слепо. Пока что на самом сервере все работает, но я не вижу результатов на веб-странице. Я настроил его для «производства» (не уверен, что я вообще все делаю правильно) и добавил в свой домен запись, которая перенаправляет на этот сервер. Веб-страница просто постоянно буферизуется, даже когда я пытаюсь установить для нее порт 8000 (для разработки). Думаю, у меня было несколько случаев, когда я видел постоянно перемещенный журнал «301 5» на docker-compose logs
, но это все.
Вот файлы Dockerfile, docker -compose.yml и nginx conf.d (которые, вероятно, являются наиболее важными.
docker -compose.yml
version: '3.7'
services:
web:
build:
environment:
- ENVIRONMENT=production
- SECRET_KEY=NOT IMPORTANT
- DEBUG=0
- EMAIL_HOST_USER=EMAIL
- EMAIL_HOST_PASSWORD=PASSWORD
volumes:
- .:/code
- static_volume:/code/staticfiles
depends_on:
- db
networks:
- nginx_network
- db_network
db:
image: postgres:11
env_file:
- config/db/db_env
networks:
- db_network
volumes:
- db_volume:/var/lib/postgresql/data
nginx:
image: nginx:1.17.0
ports:
- 80:80
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- static_volume:/code/staticfiles
depends_on:
- web
networks:
- nginx_network
networks:
nginx_network:
driver: bridge
db_network:
driver: bridge
volumes:
db_volume:
static_volume:
Dockerfile:
# Pull base image
FROM python:3.7
# Environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Work directory
WORKDIR /code
# Dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
# Copy project
COPY . /code/
# expose port
EXPOSE 80
# gunicorn
CMD ["gunicorn", "--chdir", "my_project", "--bind", ":80", "mbdebate_project.wsgi:application"]
conf.d:
upstream hello_server {
server web:80;
}
server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://hello_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /static/ {
alias /code/staticfiles/;
}
}
Настройки довольно стандартные, и я не думаю, что проблема в этом. Любая помощь был бы очень признателен :).
Руководство, которому я следовал: tpawamoy.github.io/2018/02/01/docker-compose-django-postgres-nginx.html