Arch changes and feature flags

This commit is contained in:
James Pattinson
2025-11-23 15:46:51 +00:00
parent 6f1d09cd77
commit e1659c07ea
22 changed files with 577 additions and 119 deletions

View File

@@ -1,35 +1,47 @@
services:
mysql:
image: mysql:8.0
container_name: membership_mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD:-rootpassword}
MYSQL_DATABASE: ${DATABASE_NAME:-membership_db}
MYSQL_USER: ${DATABASE_USER:-membership_user}
MYSQL_PASSWORD: ${DATABASE_PASSWORD:-change_this_password}
# 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
# 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
container_name: membership_backend
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:
@@ -39,18 +51,15 @@ services:
- 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
networks:
- membership_private # Access to database on private network
# depends_on:
# mysql:
# condition: service_healthy
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
target: development
container_name: membership_frontend
restart: unless-stopped
environment:
- VITE_HOST_CHECK=false
@@ -63,8 +72,6 @@ services:
- ./frontend/vite.config.ts:/app/vite.config.ts
depends_on:
- backend
networks:
- membership_private
#frontend-prod:
# build:
@@ -80,12 +87,7 @@ services:
# networks:
# - membership_private
networks:
membership_private:
driver: bridge
internal: false # Allow outbound internet access for backend
# Database is not exposed to host - only accessible within this network
volumes:
mysql_data:
# mysql_data:
uploads_data: