Я работаю над контейнеризацией приложения 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.
Что я здесь делаю не так?