Sprint 0 backend development complete: - auth-service: JWT authentication, login/logout, token refresh - user-service: User CRUD, profile management, RBAC - project-service: Project lifecycle, member management - config-service: System configuration, audit logging Technical stack: - FastAPI async framework - SQLAlchemy 2.0 async ORM - JWT authentication with python-jose - bcrypt password hashing - Pydantic v2 validation API endpoints: 31 total Code lines: 3,551
69 lines
1.4 KiB
YAML
69 lines
1.4 KiB
YAML
# PLM System Docker Compose Configuration
|
|
# Domain: aifly.ren
|
|
# Path: ~/plm-system/
|
|
|
|
version: '3.8'
|
|
|
|
services:
|
|
# PostgreSQL 14 Database
|
|
postgres:
|
|
image: postgres:14-alpine
|
|
container_name: plm-postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: plm_admin
|
|
POSTGRES_PASSWORD: plm_secure_password_2024
|
|
POSTGRES_DB: plm_database
|
|
PGDATA: /var/lib/postgresql/data/pgdata
|
|
volumes:
|
|
- ./postgresql/data:/var/lib/postgresql/data
|
|
ports:
|
|
- "5432:5432"
|
|
networks:
|
|
- plm-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U plm_admin -d plm_database"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# Redis Cache
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: plm-redis
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./redis/data:/data
|
|
ports:
|
|
- "6379:6379"
|
|
networks:
|
|
- plm-network
|
|
command: redis-server --appendonly yes
|
|
|
|
# Nginx Reverse Proxy
|
|
nginx:
|
|
image: nginx:alpine
|
|
container_name: plm-nginx
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
|
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
|
- ./nginx/ssl:/etc/nginx/ssl:ro
|
|
- ./nginx/html:/usr/share/nginx/html:ro
|
|
networks:
|
|
- plm-network
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
|
|
networks:
|
|
plm-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
postgres_data:
|
|
redis_data:
|