Files
TieMeasureFlow/docker-compose.yml
T
Adriano c9d9c0f9dd feat: V1.0.1 - Setup page, Docker, README
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>
2026-02-07 18:00:29 +01:00

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