Развертывание приложения Django с помощью Nginx, Gunicorn, uvicorn, PostgreSQL
Мое приложение работает в режиме разработки (я запускаю из контейнера с указанной переменной RTE=dev docker-compose up
).
Мне нужно развернуть приложение в моем домене и у меня есть все настройки для этого (Nginx, Gunicorn, uvicorn, PostgreSQL). Когда я запускаю docker-compose в режиме Production, я не получаю никаких ошибок и не могу понять, в чем проблема.
settings.py
class RuntimeEnvironment(Enum):
"""docstring: environment variables"""
dev = 1
test = 2
prod = 3
RTE = RuntimeEnvironment[os.environ['RTE']]
(...)
if RTE is RuntimeEnvironment.dev:
SECRET_KEY = 'django-insecure-l)lj4%c6(3v5r!0b9eac&0%%_500%ct4x1nbf5j5qsarmtn0#d'
else:
SECRET_KEY = os.environ['DJANGO_SECRET_KEY']
(...)
if RTE is RuntimeEnvironment.dev:
DEBUG = True
ALLOWED_HOSTS = []
else:
DEBUG = False
ALLOWED_HOSTS = ['pbstyle.dk', 'https://pbstyle.dk/']
nginx.conf
upstream app_upstream {
server app:8080;
}
server {
listen 80;
listen 443;
server_name pbstyle.dk;
location /static/ {
alias /static/;
}
location /media/ {
alias /media/;
}
location / {
proxy_set_header Host $host;
proxy_pass http://app_upstream;
}
}
docker-compose
version: "3.8"
services:
db:
image: postgres:13-alpine
volumes:
- db_data:/var/lib/postgresql/data
- ./dbscripts/:/dbscripts/
env_file:
- db_${RTE}.env
app:
build: .
ports:
- 8000:8000
- 8080:8080
env_file:
- db_${RTE}.env
volumes:
- .:/app/
- static:/static/
- media:/media/
depends_on:
- db
nginx:
build: nginx/
ports:
- 443:443
- 80:80
volumes:
- ./ngin/${RTE}/conf.d/:/etc/nginx/conf.d/
- ./certs/:/etc/letsencrypt/
- static:/static/
- media:/media/
depends_on:
- app
entrypoint.sh
echo "${RTE} Runtime Environment!"
if [ "$RTE" = "dev" ]; then
(...)
elif [ "$RTE" = "prod" ]; then
echo "This is production"
python manage.py check --deploy
python manage.py collectstatic --noinput
gunicorn kea_bank.asgi:application -b 0.0.0.0:8080 -k uvicorn.workers.UvicornWorker
fi
Есть идеи, почему я все еще не могу увидеть приложение на моем домене? Спасибо!