Путаница при использовании томов docker-compose для обслуживания статических файлов django
Докер новичок здесь, пытаясь настроить простой проект Django с помощью Compose. у меня былоуспех с этим в прошлом, но на этот раз я пытаюсь изменить настройку, но не могу понять, почему она не работает.
У меня есть следующий файл docker-compose.yml:
data:
image: postgres:9.4
volumes:
- /var/lib/postgresql
command: /bin/true
db:
image: postgres:9.4
restart: always
expose:
- "5432"
volumes_from:
- data
app:
build: .
restart: always
env_file: .env
expose:
- "8000"
links:
- db:db
volumes:
- .static:/static_files
web:
build: docker/web
restart: always
ports:
- "80:80"
links:
- app:app
volumes_from:
- app
Мой / Dockerfile это:
FROM python:3.5
ENV PYTHONUNBUFFERED 1
ADD . /app
WORKDIR /app
RUN pip install -r requirements.txt
RUN SECRET_KEY=tmpkey python manage.py collectstatic --noinput
CMD gunicorn mysite.wsgi:application -b 0.0.0.0:8000
Мой / docker / web / Dockerfile - это:
FROM nginx:1.9
RUN rm /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/
И мой файл /docker/web/default.conf:
server {
listen 80 default_server;
location /static/ {
autoindex on;
alias /static_files/;
}
location / {
proxy_pass http://app: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;
}
}
Вывод из docker показывает статические файлы, устанавливаемые в / static_files, но nginx возвращает 404 для всех файлов в / static. Если я загляну в мою папку .static (в корне проекта), каталог будет пуст (кроме файла .gitkeep, который у меня там есть). Если я бегуdocker-compose app run ls -la /static_files
, каталог пуст, ноdocker-compose app run ls -la /app/.static
имеет файл .gitkeep. Очевидно, я что-то недопонимаю с Docker и Compose. Есть мысли о том, что я делаю не так? Я понимаю, чтоRUN SECRET_KEY=tmpkey python manage.py collectstatic --noinput
должен записывать файлы в мою локальную папку .static, и nginx должен их видеть; ничего не происходит.
Версии программного обеспечения: docker-compose версии 1.7.0, сборка 0d7bf73 и Docker версии 1.11.0, сборка 4dc5990 на OS X, с докер-машиной, подключенной к облачному экземпляру.