Files
flashcards/docker-compose.yml
devcodetools f165168608 feat(deploy): image web Docker et docker-compose complet (P5)
- Dockerfile multi-étapes (node:22-alpine, pnpm, output standalone), .dockerignore
- docker-compose : service web (hôte 4000) + mysql + mongo avec volumes nommés
- Env de connexion selon DB_IMPL (MYSQL_*, MONGODB_URI) ; mongo ?authSource=admin
- Seed MySQL via 02-seed.sh (--default-character-set=utf8mb4) pour un UTF-8 propre
- fix(api): parseTags gère les colonnes JSON déjà parsées par mysql2
- TODO : phase 5 et DoD cochées
2026-09-22 09:00:07 +02:00

65 lines
1.7 KiB
YAML

services:
web:
build: .
container_name: flashcards-web
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
mongo:
condition: service_healthy
environment:
DB_IMPL: ${DB_IMPL:-mysql}
MYSQL_HOST: mysql
MYSQL_PORT: '3306'
MYSQL_USER: flashcards
MYSQL_PASSWORD: flashcards
MYSQL_DATABASE: flashcards
MONGODB_URI: mongodb://flashcards:flashcards@mongo:27017/flashcards?authSource=admin
MONGODB_DATABASE: flashcards
ports:
- '4000:3000'
mysql:
image: mysql:8.4
container_name: flashcards-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: flashcards
MYSQL_USER: flashcards
MYSQL_PASSWORD: flashcards
ports:
- '13306:3306'
volumes:
- flashcards-mysql-data:/var/lib/mysql
- ./docker/init/mysql:/docker-entrypoint-initdb.d:ro
healthcheck:
test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost', '-uroot', '-proot']
interval: 5s
timeout: 5s
retries: 20
mongo:
image: mongo:8.2
container_name: flashcards-mongo
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: flashcards
MONGO_INITDB_ROOT_PASSWORD: flashcards
MONGO_INITDB_DATABASE: flashcards
ports:
- '27018:27017'
volumes:
- flashcards-mongo-data:/data/db
- ./docker/init/mongo:/docker-entrypoint-initdb.d:ro
healthcheck:
test: ['CMD', 'mongosh', '--quiet', '--eval', 'db.runCommand({ ping: 1 })']
interval: 5s
timeout: 5s
retries: 20
volumes:
flashcards-mysql-data:
flashcards-mongo-data: