Назад | Перейти на главную страницу

Docker + Django + Nginx Случайное прерывание 504

Я работаю над контейнеризацией приложения Django с помощью Docker, но у меня много проблем с тем, чтобы приложение работало последовательно. Моя конфигурация ниже:

Dockerfile

FROM ubuntu:18.04

RUN apt-get update -y
RUN apt-get upgrade -y

RUN apt-get install -y \
        nginx \
        git \
        python3 \
        python3-dev \
        python3-pip \
        build-essential \
        libpq-dev 


RUN apt-get install postgresql-client -y

RUN mkdir /config

COPY requirements.txt /config/

RUN pip3 install --no-cache-dir -r /config/requirements.txt

COPY wait-for-postgres.sh /config/

RUN chmod +x /config/wait-for-postgres.sh

RUN mkdir /src

COPY ./src /src

WORKDIR /src

docker-compose.yml

version: '3'

services:
  db:
    image: postgres:9.5
    container_name: pg01
    environment:
      POSTGRES_PASSWORD: dusk
  web:
    build: .
    command: ["/config/wait-for-postgres.sh", "db", "python3", "manage.py", "runserver", "0.0.0.0:8000"]
    expose:
      - "8000"
    depends_on:
      - db
      - nginx
    container_name: dj01
    environment:
      POSTGRES_PASSWORD: mypass
      PGPASSWORD: mypass
      PGHOST: postgres
      PGPORT: 5432
  nginx:
    image: nginx:latest
    container_name: ng01
    ports:
      - "8000:8000"
    volumes:
      - ./config/nginx:/etc/nginx/conf.d
      - ./src/static:/static

nginx.conf

upstream web {
  ip_hash;
  server web:8000;
}

server {

    location /static/ {
        autoindex on;
        alias /static/;
    }

    location / {
        proxy_pass http://web/;
    }
    listen 8000;
    server_name localhost;
}

Я запускаю приложение с docker-compose up --build и примерно в 95% случаев я получаю тайм-аут 504. Остальные 5% времени загружается приложение. Иногда удаление контейнеров полностью с docker rm $(docker ps -a -q) а сборка с нуля заставляет приложение загружаться, но не постоянно.

Когда приложение запускается, оно работает должным образом, но внесенные мной изменения не перезагружаются последовательно. Это часто заставляет меня вручную перезапускать приложение (ctrl+c и docker-compose up --build снова), что часто возвращает меня к ошибке 504.

Что я здесь делаю не так?