我一直在尝试使用 Gunicorn、NginX 和 Docker 在 Lightsail 上部署 Django 应用程序。我看过多个教程,但都没有成功。我对大多数概念都不熟悉,而且我几乎一直在盲目跟随。到目前为止,一切似乎都在服务器本身上运行,但我无法在网页上看到结果。我已经将它配置为“生产”(不确定我是否做得对),并且我已经在我的域中添加了一条记录,该记录重定向到该服务器。该网页只是不断缓冲,即使我尝试将其设置为端口 8000(用于开发)也是如此。我想我已经遇到了一些实例,我在 docker-compose logs
上看到了“301 5”永久移动的日志,但仅此而已。
这是 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:
docker 文件:
# 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"]
session 文件:
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
最佳答案
在处理 Flask 应用程序时,我在连接 Nginx 时遇到了类似的问题。
在 nginx.conf 上,我在 app.run
中使用了相同的主机配置。
将 conf.d 中的 web:80;
更改为 Django 应用程序公开的主机。**
我的情况:-
应用.py
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
nginx.conf
upstream flask-app {
server 0.0.0.0:5000;
}
server {
listen 80 default_server;
# https for production
location / {
proxy_pass http://flask-app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
关于django - 我正在尝试在 AWS Lightsail 中的 Docker 上部署 Django,页面在没有连接到服务器的情况下卡住加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61692085/