Repository navigation
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
67 lines (63 loc) · 2.82 KB
/
Copy pathdocker-compose.dev.yml
File metadata and controls
67 lines (63 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Piloti — override dev. À utiliser avec :
# docker compose -f docker-compose.yml -f docker-compose.dev.yml up
#
# Diff prod :
# - port 3000 exposé sur la machine hôte
# - bind mount du code source (hot reload)
# - target=dev (lance `pnpm dev`, pas `node server.js`)
# - cloudflared et traefik désactivés (override avec `profiles: [never]`)
# - DB sur le filesystem local plutôt qu'un volume nommé
#
# NB : pour la plupart des workflows dev, lance simplement `pnpm dev` en local.
# Ce fichier sert si tu veux reproduire l'env conteneurisé pendant le dev.
services:
migrate:
profiles: ["never"]
app:
# Image dédiée au dev : NE PAS réutiliser `piloti:latest` (image de prod,
# target runner → `node server.js`). Sinon un rebuild prod casse le dev.
image: piloti:dev
build:
target: dev
args:
NODE_IMAGE_TAG: ${NODE_IMAGE_TAG:?NODE_IMAGE_TAG manquant (voir .env.example)}
# Port hôte 4000 (et non 3000) : sur cette machine Windows, 3000 est tombé
# dans une plage réservée par Hyper-V/WinNAT (2581-3780, cf.
# `netsh int ipv4 show excludedportrange protocol=tcp`), Docker ne peut
# plus la binder. Le conteneur reste sur 3000 en interne.
ports:
- "4000:3000"
environment:
NODE_ENV: development
# DB dev = fichier SQLite bind-mounté depuis l'hôte (./dev.db). AUCUN
# accès au volume nommé `piloti-data` de la prod.
DATABASE_URL: file:/app/dev.db
BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:-dev-secret-32-chars-minimum-aaaaaa}
BETTER_AUTH_URL: ${BETTER_AUTH_URL:-http://localhost:4000}
# Accès LAN (téléphone/autre poste) — origines de confiance better-auth.
TRUSTED_ORIGINS: ${TRUSTED_ORIGINS:-}
# Emails (Resend, vide en dev) + push (VAPID dev) — cf. .env.dev.
RESEND_API_KEY: ${RESEND_API_KEY:-}
RESEND_FROM_EMAIL: ${RESEND_FROM_EMAIL:-}
VAPID_PUBLIC_KEY: ${VAPID_PUBLIC_KEY:-}
VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY:-}
VAPID_SUBJECT: ${VAPID_SUBJECT:-}
# Remplace complètement les volumes hérités du compose de base (qui
# montent `piloti-data:/data` et `piloti-uploads:/app/public/uploads`).
# On garde uniquement le bind mount du code + anonymous volumes pour
# préserver les node_modules et .next compilés dans l'image dev.
volumes: !override
- ./:/app
- /app/node_modules
- /app/.next
# Annule la dépendance prod sur le service `migrate` (disabled via profil)
depends_on: !reset null
networks: !reset null
# Sans ça, le container dev hérite des labels traefik du compose de base
# et entre en conflit avec le router `piloti` du container prod (même
# règle Host) → traefik invalide tout et renvoie 404 sur la prod.
labels: !reset null
traefik:
profiles: ["never"]
cloudflared:
profiles: ["never"]