Django/Wagtail публікація в Docker

Для публікації проєкт Django/Wagtail треба налаштувати Docker контейнер.

Власне цим і займемось. Проект тестовий, тому вважаємо, БД SQLite або окремий сервер БД. Це шаблон, звичайно можемо змінювати версії всього до актуальних,  стандартний сервер для розробки (python manage.py runserver) замінити на unicorn для продакшену і таке інше.

приклад для Dockerfile:

# Use the official Debian-based Python image as the base image
FROM python:3.9-slim-buster

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install the required packages for the project
RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    libjpeg-dev \
    libffi-dev \
    libssl-dev \
    && pip install --upgrade pip \
    && pip install -r requirements.txt

# Set environment variables for the project
ENV DJANGO_SETTINGS_MODULE=myproject.settings \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

# Set the default command to run when the container starts
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

приклад для docker-compose.yml :

version: '3.7'

services:
  web:
    build: .
    command: bash -c "python manage.py collectstatic --noinput && daphne myproject.asgi:application --port 8000 --bind 0.0.0.0" environment: DJANGO_SETTINGS_MODULE: myproject.settings
    volumes: - .:/app

nginx:
    image: nginx:1.19
    ports: - 80:80
    volumes: - ./nginx:/etc/nginx/conf.d
    depends_on:
      - web

зразок конфігурації nginx.conf

server {
    listen 80;
    server_name localhost;
    location / {
        proxy_pass http://web:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location /static/ {
      alias /app/static/;
    }

}

 

 

 

Залишити відповідь