Django Nginx Gunicorn-Media Файлы Не Отображаются
Разворачиваю проект на django в docker цепляю nginx не работают медиа файлы nginx их не видит.
Вот настройки NGINX
upstream web {
server web:8000;
}
server {
listen 80;
server_name api.domen.club;
return 301 https://api.domen.club$request_uri;
}
server {
listen 443 ssl;
server_name api.domen.club;
ssl_certificate /etc/ssl/cert/domen.club.crt;
ssl_certificate_key /etc/ssl/cert/domen.club.key;
location /static/ {
alias /usr/src/app/static/;
}
location /media/ {
root /usr/src/app/media/;
}
location / {
client_max_body_size 100M;
proxy_pass http://web;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
}
}
Вот Docker
FROM python:3.8-alpine
# set work directory
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN python -m pip install --upgrade pip
# install psycopg2 dependencies
RUN apk update \
&& apk add postgresql-dev gcc python3-dev musl-dev
# install dependencies
RUN apk update && apk add g++ gcc libxml2 libxslt-dev
COPY ./requirements.txt .
#COPY ./entrypoint.sh .
#RUN chmod +x entrypoint.sh
RUN pip install -r requirements.txt
RUN apk --update add build-base jpeg-dev zlib-dev
RUN python3 -m pip install --upgrade Pillow
# copy project
COPY . .
#ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
Docker-compose
version: '3.7'
services:
web:
build: .
command: sh -c "python manage.py makemigrations && python manage.py migrate && gunicorn health_gate.wsgi:application --bind 0.0.0.0:8000 --reload -w 4"
volumes:
- ./:/usr/src/app/
- static_volume:/usr/src/app/static
ports:
- "8000:8000"
env_file:
- ./.env.dev
depends_on:
- db
db:
image: postgres:12.0-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=heal_user
- POSTGRES_PASSWORD=haeryr^dasd^dfg
- POSTGRES_DB=heal
nginx:
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- "80:80"
- "443:443"
depends_on:
- web
volumes:
- ./nginx/cert:/etc/ssl/cert
- static_volume:/usr/src/app/static
volumes:
postgres_data:
static_volume:
URL
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView, TokenVerifyView
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/', include('api.urls')),
path('api-auth/', include('rest_framework.urls')),
path('api/token/', TokenObtainPairView.as_view()),
path('api/token/refresh/', TokenRefreshView.as_view()),
path('api/token/verify/', TokenVerifyView.as_view()),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
В .ENV файле стоит True
В setings прописанно
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
if DEBUG == True:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
else:
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = "/static/"