Files
Rezepte/docker-compose.local-network.yml

101 lines
2.5 KiB
YAML

services:
# MySQL Database
mysql:
image: mysql:8.0
container_name: rezepte-mysql
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: rezepte
MYSQL_USER: rezepte_user
MYSQL_PASSWORD: rezepte_pass
ports:
- "0.0.0.0:3307:3306" # Bind to all interfaces
volumes:
- mysql_data:/var/lib/mysql
- ./sql-init:/docker-entrypoint-initdb.d
networks:
- rezepte-network
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
# Backend API
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: rezepte-backend
environment:
NODE_ENV: production
PORT: 3001
DATABASE_URL: mysql://rezepte_user:rezepte_pass@mysql:3306/rezepte
JWT_SECRET: your-super-secret-jwt-key-change-in-production
UPLOAD_PATH: /app/uploads
MAX_FILE_SIZE: 5242880
# Allow access from any IP in local network
CORS_ORIGIN: "*"
ports:
- "0.0.0.0:3001:3001" # Bind to all interfaces
volumes:
- uploads_data:/app/uploads
- ./uploads:/app/legacy-uploads:ro # Mount existing uploads as read-only
networks:
- rezepte-network
depends_on:
mysql:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/api/health"]
interval: 30s
timeout: 10s
retries: 3
# Frontend Application
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
args:
# Use host IP instead of localhost for API calls
VITE_API_URL: http://${HOST_IP:-192.168.1.100}:3001/api
container_name: rezepte-frontend
ports:
- "0.0.0.0:3000:80" # Bind to all interfaces
networks:
- rezepte-network
depends_on:
- backend
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
# Legacy PHP Application (optional)
php-app:
build: .
container_name: rezepte-php-legacy
ports:
- "0.0.0.0:8080:80" # Bind to all interfaces
volumes:
- ./uploads:/var/www/html/uploads
- .:/var/www/html
networks:
- rezepte-network
depends_on:
- mysql
restart: unless-stopped
volumes:
mysql_data:
driver: local
uploads_data:
driver: local
networks:
rezepte-network:
driver: bridge