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