Files
Rezepte/docker-compose.development.yml

105 lines
2.7 KiB
YAML

services:
mysql:
image: mysql:8.0
container_name: rezepte-mysql-dev
restart: unless-stopped
environment:
- MYSQL_DATABASE=rezepte
- MYSQL_USER=rezepte
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
ports:
- "0.0.0.0:3307:3306"
volumes:
- mysql_dev_data:/var/lib/mysql
# Initialize with data
- ./Rezepte.sql:/docker-entrypoint-initdb.d/01-Rezepte.sql
- ./ingredients.sql:/docker-entrypoint-initdb.d/02-ingredients.sql
- ./Zubereitung.sql:/docker-entrypoint-initdb.d/03-Zubereitung.sql
- ./rezepte_bilder.sql:/docker-entrypoint-initdb.d/04-rezepte_bilder.sql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
interval: 30s
timeout: 10s
retries: 5
networks:
- rezepte-network
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: rezepte-backend-dev
restart: unless-stopped
environment:
- NODE_ENV=development
- DATABASE_URL=mysql://rezepte:${MYSQL_PASSWORD}@mysql:3306/rezepte
- CORS_ORIGIN=${CORS_ORIGIN:-*}
- PORT=3001
ports:
- "0.0.0.0:3001:3001"
volumes:
- uploads_dev_data:/app/uploads
# Mount existing uploads from host for development
- ./upload:/app/uploads:ro
# Development: Mount source code for hot reload
- ./backend/src:/app/src:ro
- ./backend/prisma:/app/prisma:ro
depends_on:
mysql:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/api/health"]
interval: 30s
timeout: 10s
retries: 3
networks:
- rezepte-network
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: rezepte-frontend-dev
restart: unless-stopped
ports:
- "0.0.0.0:3000:80"
depends_on:
- backend
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/"]
interval: 30s
timeout: 10s
retries: 3
networks:
- rezepte-network
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: rezepte-phpmyadmin-dev
restart: unless-stopped
environment:
- PMA_HOST=mysql
- PMA_PORT=3306
- PMA_USER=root
- PMA_PASSWORD=${MYSQL_ROOT_PASSWORD}
- UPLOAD_LIMIT=2G
- MEMORY_LIMIT=2G
ports:
- "0.0.0.0:8080:80"
depends_on:
mysql:
condition: service_healthy
networks:
- rezepte-network
volumes:
mysql_dev_data:
driver: local
uploads_dev_data:
driver: local
networks:
rezepte-network:
driver: bridge