c9d9c0f9dd
Add password-protected setup page (/api/setup) for DB initialization, admin creation, and demo data seeding. Dockerize the full stack with server, client, nginx reverse proxy, and MySQL services. Add project README with architecture overview, quick start, and VPS deployment guide. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
86 lines
1.9 KiB
YAML
86 lines
1.9 KiB
YAML
services:
|
|
mysql:
|
|
image: mysql:8.0
|
|
container_name: tmflow-mysql
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root_password_change_me}
|
|
MYSQL_DATABASE: ${DB_NAME:-tiemeasureflow}
|
|
MYSQL_USER: ${DB_USER:-tmflow}
|
|
MYSQL_PASSWORD: ${DB_PASSWORD:-change_me_in_production}
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
command: >
|
|
--authentication-policy=mysql_native_password
|
|
--character-set-server=utf8mb4
|
|
--collation-server=utf8mb4_unicode_ci
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- tmflow-net
|
|
|
|
server:
|
|
build:
|
|
context: ./server
|
|
dockerfile: Dockerfile
|
|
container_name: tmflow-server
|
|
restart: unless-stopped
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
DB_HOST: mysql
|
|
UPLOAD_DIR: uploads
|
|
volumes:
|
|
- upload_data:/app/uploads
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
networks:
|
|
- tmflow-net
|
|
|
|
client:
|
|
build:
|
|
context: ./client
|
|
dockerfile: Dockerfile
|
|
container_name: tmflow-client
|
|
restart: unless-stopped
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
API_SERVER_URL: http://server:8000
|
|
depends_on:
|
|
- server
|
|
networks:
|
|
- tmflow-net
|
|
|
|
nginx:
|
|
image: nginx:alpine
|
|
container_name: tmflow-nginx
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${NGINX_PORT:-80}:80"
|
|
- "${NGINX_SSL_PORT:-443}:443"
|
|
volumes:
|
|
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
|
# Uncomment for SSL:
|
|
# - ./certbot/conf:/etc/letsencrypt:ro
|
|
# - ./certbot/www:/var/www/certbot:ro
|
|
depends_on:
|
|
- server
|
|
- client
|
|
networks:
|
|
- tmflow-net
|
|
|
|
volumes:
|
|
mysql_data:
|
|
driver: local
|
|
upload_data:
|
|
driver: local
|
|
|
|
networks:
|
|
tmflow-net:
|
|
driver: bridge
|