Add: new docker-compose file for dev setup
This commit is contained in:
parent
510fff3059
commit
b2ec2f6924
2 changed files with 197 additions and 29 deletions
|
@ -1,29 +0,0 @@
|
||||||
services:
|
|
||||||
db:
|
|
||||||
image: postgres:16
|
|
||||||
container_name: postgres_dev
|
|
||||||
restart: unless-stopped
|
|
||||||
environment:
|
|
||||||
POSTGRES_USER: archivist
|
|
||||||
POSTGRES_PASSWORD: password
|
|
||||||
POSTGRES_DB: archivist
|
|
||||||
TZ: Europe/Berlin
|
|
||||||
ports:
|
|
||||||
- "5432:5432"
|
|
||||||
volumes:
|
|
||||||
- postgres_data:/var/lib/postgresql/data
|
|
||||||
|
|
||||||
pgadmin:
|
|
||||||
image: dpage/pgadmin4
|
|
||||||
container_name: pgadmin_dev
|
|
||||||
restart: unless-stopped #always
|
|
||||||
environment:
|
|
||||||
PGADMIN_DEFAULT_EMAIL: aroy-art@pm.me
|
|
||||||
PGADMIN_DEFAULT_PASSWORD: admin
|
|
||||||
ports:
|
|
||||||
- "5050:80"
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
postgres_data:
|
|
197
docker-compose.dev.yml
Normal file
197
docker-compose.dev.yml
Normal file
|
@ -0,0 +1,197 @@
|
||||||
|
# ./docker-compose.dev.yml
|
||||||
|
name: gallery-archivist-dev
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Backend Service (Django API)
|
||||||
|
backend:
|
||||||
|
build:
|
||||||
|
context: ./backend/
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
# --- Add build arguments ---
|
||||||
|
args:
|
||||||
|
UID: ${UID:-1000} # Use UID from env, default to 1000
|
||||||
|
GID: ${GID:-1000} # Use GID from env, default to 1000
|
||||||
|
container_name: backend_dev
|
||||||
|
command: python manage.py runserver 0.0.0.0:8080
|
||||||
|
volumes:
|
||||||
|
- ./backend:/app # Mount local code for hot-reloading
|
||||||
|
- ./media:/app/media # Mount the media folder outside of the container
|
||||||
|
- ./tmp/test-data:/app/test-data:ro # Mount the test data folder
|
||||||
|
ports:
|
||||||
|
- "8080:8080" # Map host port 8080 to container port 8080
|
||||||
|
environment:
|
||||||
|
# --- Django Settings ---
|
||||||
|
- DJANGO_SETTINGS_MODULE=core.settings # Adjust 'core' if your settings are elsewhere
|
||||||
|
- SECRET_KEY=django-insecure-replace-this-in-prod! # CHANGE THIS FOR PRODUCTION
|
||||||
|
- DEBUG=1 # Development mode
|
||||||
|
- ALLOWED_HOSTS=northpaw.aroy.hs.tun, backend
|
||||||
|
# --- Initial Admin ---
|
||||||
|
- DJANGO_SUPERUSER_USERNAME=aroy
|
||||||
|
- DJANGO_SUPERUSER_PASSWORD=debitor12
|
||||||
|
- DJANGO_SUPERUSER_EMAIL=aroy-art@pm.me
|
||||||
|
# --- Database Settings ---
|
||||||
|
- DB_HOST=db # Use the database service
|
||||||
|
#- DATABASE_URL=postgres://archivist:password@db:5432/archivist
|
||||||
|
# --- Valkey/Celery Broker Settings ---
|
||||||
|
- CELERY_BROKER_URL=redis://valkey:6379/0
|
||||||
|
# --- Celery Result Backend Settings ---
|
||||||
|
- CELERY_RESULT_BACKEND=django-db # Using django-celery-results
|
||||||
|
# --- Other Env Vars ---
|
||||||
|
# Add any other environment variables your Django app needs
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
- valkey
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Frontend Service (React/Vite Dev Server)
|
||||||
|
frontend:
|
||||||
|
build:
|
||||||
|
context: ./frontend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
# --- Add build arguments ---
|
||||||
|
args:
|
||||||
|
UID: ${UID:-1000} # Use UID from env, default to 1000
|
||||||
|
GID: ${GID:-1000} # Use GID from env, default to 1000
|
||||||
|
container_name: frontend_dev
|
||||||
|
command: npm run dev -- --host # Runs the Vite dev server, accessible externally
|
||||||
|
volumes:
|
||||||
|
- ./frontend:/app # Mount local code
|
||||||
|
- /app/node_modules # Use a volume for node_modules to avoid overwriting
|
||||||
|
ports:
|
||||||
|
- "5173:5173" # Map host port 5173 to container port 5173
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=development
|
||||||
|
- VITE_PROXY_TARGET_API=http://backend:8080 # URL for frontend to reach backend API (via host)
|
||||||
|
depends_on:
|
||||||
|
- backend # Optional, ensures backend starts first, but not strictly needed for API calls
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Database Service (PostgreSQL)
|
||||||
|
db:
|
||||||
|
image: postgres:16-alpine # Use a specific version
|
||||||
|
container_name: postgres_db_dev
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data # Persist data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=archivist
|
||||||
|
- POSTGRES_USER=archivist
|
||||||
|
- POSTGRES_PASSWORD=password
|
||||||
|
- TZ=Europe/Berlin
|
||||||
|
ports:
|
||||||
|
- "5433:5432" # Map host port 5433 to container 5432 (avoids conflicts)
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Cache Service (Valkey)
|
||||||
|
valkey:
|
||||||
|
image: valkey/valkey:7.2 # Use official Valkey image
|
||||||
|
container_name: valkey_cache_dev
|
||||||
|
ports:
|
||||||
|
- "6379:6379" # Map host port 6379 to container 6379
|
||||||
|
volumes:
|
||||||
|
- valkey_data:/data # Persist Valkey data (optional for dev)
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Celery Worker Service
|
||||||
|
celery_worker:
|
||||||
|
build:
|
||||||
|
context: ./backend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
# --- Add build arguments ---
|
||||||
|
args:
|
||||||
|
UID: ${UID:-1000} # Use UID from env, default to 1000
|
||||||
|
GID: ${GID:-1000} # Use GID from env, default to 1000
|
||||||
|
container_name: celery_worker_dev
|
||||||
|
entrypoint: [""]
|
||||||
|
# Adjust 'core' if your Celery app instance is named differently in core/celery.py
|
||||||
|
command: celery -A core worker --loglevel=info
|
||||||
|
volumes:
|
||||||
|
- ./backend:/app # Mount code
|
||||||
|
environment:
|
||||||
|
# Inherit environment variables from backend (or redefine as needed)
|
||||||
|
- DJANGO_SETTINGS_MODULE=core.settings
|
||||||
|
- SECRET_KEY=django-insecure-replace-this-in-prod!
|
||||||
|
- DEBUG=1
|
||||||
|
- DB_HOST=db # Use the database service
|
||||||
|
- CELERY_BROKER_URL=redis://valkey:6379/0
|
||||||
|
- CELERY_RESULT_BACKEND=django-db
|
||||||
|
depends_on:
|
||||||
|
- backend # Depends on backend code
|
||||||
|
- db
|
||||||
|
- valkey
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Celery Beat Service (Scheduled Tasks)
|
||||||
|
celery_beat:
|
||||||
|
build:
|
||||||
|
context: ./backend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
# --- Add build arguments ---
|
||||||
|
args:
|
||||||
|
UID: ${UID:-1000} # Use UID from env, default to 1000
|
||||||
|
GID: ${GID:-1000} # Use GID from env, default to 1000
|
||||||
|
container_name: celery_beat_dev
|
||||||
|
entrypoint: [""]
|
||||||
|
# Adjust 'core' if your Celery app instance is named differently
|
||||||
|
# Requires django-celery-beat to be installed and configured
|
||||||
|
command: celery -A core beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
|
||||||
|
volumes:
|
||||||
|
- ./backend:/app # Mount code
|
||||||
|
environment:
|
||||||
|
# Inherit environment variables from backend (or redefine as needed)
|
||||||
|
- DJANGO_SETTINGS_MODULE=core.settings
|
||||||
|
- SECRET_KEY=django-insecure-replace-this-in-prod!
|
||||||
|
- DEBUG=1
|
||||||
|
- DB_HOST=db # Use the database service
|
||||||
|
- DATABASE_URL=postgres://archivist:password@db:5432/archivist
|
||||||
|
- CELERY_BROKER_URL=redis://valkey:6379/0
|
||||||
|
- CELERY_RESULT_BACKEND=django-db
|
||||||
|
depends_on:
|
||||||
|
- backend # Depends on backend code
|
||||||
|
- db
|
||||||
|
- valkey
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Flower Service (Celery Monitoring)
|
||||||
|
flower:
|
||||||
|
image: mher/flower:latest # Use official Flower image
|
||||||
|
container_name: flower_monitor_dev
|
||||||
|
ports:
|
||||||
|
- "5555:5555" # Map host port 5555 to container 5555
|
||||||
|
environment:
|
||||||
|
# Tell Flower how to connect to the Valkey broker
|
||||||
|
- CELERY_BROKER_URL=redis://valkey:6379/0
|
||||||
|
# Set Flower's port inside the container (must match the 'ports' mapping)
|
||||||
|
- FLOWER_PORT=5555
|
||||||
|
# Optional: Add basic auth for Flower UI
|
||||||
|
# - FLOWER_BASIC_AUTH=user:password
|
||||||
|
depends_on:
|
||||||
|
- valkey
|
||||||
|
- celery_worker # Wait for worker to likely be up
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# pgAdmin Service (Database GUI)
|
||||||
|
pgadmin:
|
||||||
|
image: dpage/pgadmin4:latest # Use official pgAdmin image
|
||||||
|
container_name: pgadmin_dev
|
||||||
|
environment:
|
||||||
|
- PGADMIN_DEFAULT_EMAIL=aroy-art@pm.me # Change as needed
|
||||||
|
- PGADMIN_DEFAULT_PASSWORD=admin # CHANGE THIS!
|
||||||
|
- PGADMIN_LISTEN_PORT=80 # Port inside the container pgAdmin listens on
|
||||||
|
ports:
|
||||||
|
- "5050:80" # Map host port 5050 to container port 80
|
||||||
|
volumes:
|
||||||
|
- pgadmin_data:/var/lib/pgadmin # Persist pgAdmin configuration
|
||||||
|
depends_on:
|
||||||
|
- db # Wait for the database to be ready
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Define named volumes for data persistence
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
|
valkey_data:
|
||||||
|
pgadmin_data:
|
||||||
|
|
||||||
|
# Define a default network
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
driver: bridge
|
Loading…
Add table
Reference in a new issue