Привет, прежде чем объяснить мою проблему, я приведу небольшое описание моих требований. Я работаю с kong и konga, чтобы управлять своими проектами с docker. Это помогает запускать разные приложения в разных папках, как если бы они были все на одном сайте.
У меня уже есть разные приложения с docker, но это первое, в котором я использую Django. Первоначально приложение было разработано с использованием gunicorn для запуска приложения django и nginx для обслуживания файлов c через другой порт. В локальной среде работает, но когда я запускаю свои приложения с Konga, мне нужно переключать оба способа таким образом, чтобы я мог работать под одним и тем же портом, и я считаю, что вариант uwsgi. Я на самом деле мог запустить приложение с Konga, но без обслуживания какого-либо актива.
Структура проекта:
blacklist/
asgi.py
settings.py
urls.py
wsgi.py
blacklist_app/
controllers/
migrations/
templates/
uploaded_files/
urls.py models.py views.py etc
config/
nginx/
nginx.conf
assets/ (Assets to be serve by nginx)
uwsgi/
uwsgi.ini
docker-compose.yml
Dockerfile
manage.py
requirements.txt
#docker-compose.yml
version: '3'
services:
nginx:
image: nginx:latest
container_name: subida-excel-nginx
ports:
- "8011:8011"
volumes:
- ./nginx/src:/src
- ./config/nginx:/etc/nginx/conf.d
- ./config/uwsgi:/etc/uwsgi.d
depends_on:
- web
networks:
- subida-excels
environment:
- URL_BASE=${SUBIDAEXCEL_URLBASE}
web:
container_name: subida-excel
build: .
command: gunicorn -w 10 --timeout 86400 -b 0.0.0.0:8010 blacklist.wsgi
volumes:
- .:/code
- ./.ssh:/root/.ssh
- ./db.sqlite3:/code/db.sqlite3
- ./app.socket:/var/run/uwsgi.sock
ports:
- "8010:8010"
networks:
- kong-net
- subida-excels
environment:
- ALLOWED_HOST=${SUBIDAEXCEL_HOSTS}
- DEBUG=${SUBIDAEXCEL_DEBUG}
networks:
subida-excels:
kong-net:
external: true
volumes:
db.sqlite3:
app.socket:
#/config/uwsgi.ini
[uwsgi]
plugins=python3
chdir=/code
module=blacklist.uwsgi
pidfile=/run/uwsgi/app.pid
socket=/var/run/uwsgi.sock
master=True
processes=5
harakiri=20
max-requests=500
vacuum=True
#/config/nginx/nginx.conf
server
{
listen 0.0.0.0:8010;
server_name $URL_BASE;
location /static {
alias /assets;
}
location / {
include uwsgi_params;
uwsgi_pass socket:/run/uwsgi/socket.sock;
}
}
#/Dockerfile
FROM python:3.8.1
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get install sqlite3 vim -y
COPY . /code/
COPY ./.ssh /root/.ssh
WORKDIR /code/
COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
RUN chmod -R 750 /code
RUN chmod 770 /code
RUN chmod 770 /code/db.sqlite3
RUN chmod -R 770 /code/blacklist_app/uploaded_files
EXPOSE 8010
Это основная структура, которая запускает его, хотя теперь не инициализируется из-за ошибки.
Буду признателен за помощь в правильном обслуживании активов, если они обслуживаются django или nginx