img 404 usando Nginx, Docker, Django, Digital Ocean

1

Por algum motivo, meus ativos estáticos CSS, JS e Font-Awesome são reconhecidos e veiculados corretamente, mas meus arquivos estáticos img estão mostrando erros 404 nos logs do contêiner do Nginx Docker.

Tudo funciona bem quando eu construo esses contêineres localmente, mas assim que eu construo no Digital Ocean, os arquivos img começam a lançar erros 404 com o Nginx.

Eu tenho trabalhado por aí por alguns dias sem sorte, qualquer ajuda seria muito apreciada.

Aqui estão as minhas configurações de Nginx:

server {

    listen 80;
    server_name 104.236.29.80;

    access_log /dev/stdout;
    error_log /dev/stdout info;

    location /static/ {
        alias /usr/src/app/personal/static/;
    }

    location / {
        proxy_pass http://web:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}


Aqui está o Dockerfile para minha compilação Nginx:

FROM tutum/nginx
RUN rm /etc/nginx/sites-enabled/default
ADD sites-enabled/ /etc/nginx/sites-enabled


Meu arquivo do Docker-compose parece um pouco com isso:

web:
    restart: always
    build: ./web
    expose:
      - 8000
    links:
      - postgres:postgres
    volumes:
      - ./web:/usr/src/app
    env_file:
      - .env
    command: /usr/local/bin/gunicorn etandme.wsgi:application -w 2 -b :8000

 nginx:
    restart: always
    build: ./nginx
    ports:
      - 80:80
    volumes_from:
      - web
    links:
      - web:web


Os registros de erros são um pouco parecidos com isto:

"GET /static/js/creative.js HTTP/1.1" 200 1860 "http://104.236.29.80/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko)
[error] 7#0: *7 open() "/usr/src/app/personal/static/img/Monkeypod.jpg" failed (2: No such file or directory), client: 98.151.113.208, server: 159.203.166.130, request: "GET /static/img/Monkeypod.jpg HTTP/1.1", host: "104.236.29.80", referrer: "http://104.236.29.80/"


Posso confirmar que executei 'collectstatic' no contêiner da web a partir da linha de comando, e o terminal confirma que os arquivos img foram copiados para a raiz estática (/ usr / src / app / personal / static /).

Estou completamente perdido a respeito de por que apenas uma parte dos arquivos estáticos seria veiculada, especialmente porque todos eles estão localizados no mesmo diretório e referenciados no backend do Django com a mesma sintaxe.

Obrigado gentilmente pelo seu tempo e atenção!

    
por Taylor Parrish 05.10.2017 / 23:39

1 resposta

0

Encontrou o problema!

Por algum motivo, quando executo o collectstatic no servidor de produção (droplet Digital Ocean Docker), os arquivos .jpg são copiados para o diretório raiz estático com uma extensão .JPG.

Depois de fazer algumas alterações nos meus modelos do Django e trocar o .jpg por .JPG nas tags de template, tudo é exibido corretamente agora.

    
por 06.10.2017 / 00:14