94 lines
2.6 KiB
YAML
94 lines
2.6 KiB
YAML
services:
|
|
# mysql:
|
|
# image: mysql:8.0
|
|
# container_name: membership_mysql
|
|
# restart: unless-stopped
|
|
# environment:
|
|
# MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD:-secure_root_password_change_this}
|
|
# MYSQL_DATABASE: ${DATABASE_NAME:-membership_db}
|
|
# MYSQL_USER: ${DATABASE_USER:-membership_user}
|
|
# MYSQL_PASSWORD: ${DATABASE_PASSWORD:-secure_password_change_this}
|
|
# # No external port exposure - database only accessible on private network
|
|
# expose:
|
|
# - "3306"
|
|
# volumes:
|
|
# - mysql_data:/var/lib/mysql
|
|
# networks:
|
|
# - membership_private
|
|
# healthcheck:
|
|
# test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
|
# start_period: 10s
|
|
# interval: 5s
|
|
# timeout: 5s
|
|
# retries: 10
|
|
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
# Database configuration
|
|
- DATABASE_HOST=${DATABASE_HOST}
|
|
- DATABASE_PORT=${DATABASE_PORT}
|
|
- DATABASE_USER=${DATABASE_USER}
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
|
|
- DATABASE_NAME=${DATABASE_NAME}
|
|
# Application configuration
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
- ALGORITHM=${ALGORITHM}
|
|
- ACCESS_TOKEN_EXPIRE_MINUTES=${ACCESS_TOKEN_EXPIRE_MINUTES}
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
ports:
|
|
- "6000:8000" # Only expose backend API to host
|
|
volumes:
|
|
- ./backend/app:/app/app
|
|
- ./backend/alembic:/app/alembic
|
|
- ./backend/alembic.ini:/app/alembic.ini
|
|
- uploads_data:/app/uploads
|
|
command: >
|
|
sh -c "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload"
|
|
# depends_on:
|
|
# mysql:
|
|
# condition: service_healthy
|
|
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
target: development
|
|
restart: unless-stopped
|
|
environment:
|
|
- VITE_HOST_CHECK=false
|
|
- VITE_ALLOWED_HOSTS=${VITE_ALLOWED_HOSTS}
|
|
ports:
|
|
- "8050:3000" # Expose frontend to host
|
|
volumes:
|
|
- ./frontend/src:/app/src
|
|
- ./frontend/public:/app/public
|
|
- ./frontend/vite.config.ts:/app/vite.config.ts
|
|
depends_on:
|
|
- backend
|
|
|
|
#frontend-prod:
|
|
# build:
|
|
# context: ./frontend
|
|
# dockerfile: Dockerfile
|
|
# target: production
|
|
# container_name: membership_frontend_prod
|
|
# restart: unless-stopped
|
|
# ports:
|
|
# - "8050:80" # Nginx default port
|
|
# depends_on:
|
|
# - backend
|
|
# networks:
|
|
# - membership_private
|
|
|
|
|
|
volumes:
|
|
# mysql_data:
|
|
uploads_data:
|