- Pin seaweedfs (4.47), jaeger (1.76.0), certbot (v5.8.0) and pgadmin (9.18) instead of :latest. - Rotate container logs (json-file, 3 x 10 MB) in every stack. - Cap Jaeger's in-memory storage at 100k traces and add a healthcheck. - Publish dev ports on 127.0.0.1 (DEV_BIND_ADDRESS) so the dev credentials aren't reachable from the LAN. - Fix the prod command in compose.yml's header, the README's note on who writes the admin PAT, and the certbot command's line breaks.
73 lines
2.4 KiB
YAML
73 lines
2.4 KiB
YAML
name: infra-dev
|
|
|
|
# Development overlay: publishes every service's port to the host, so any
|
|
# project's dev stack can reach them at host.docker.internal:<port> instead
|
|
# of joining infra-net. Adds pgAdmin.
|
|
#
|
|
# docker compose -f compose.yml -f compose.dev.yml up -d
|
|
#
|
|
# Ports are bound to DEV_BIND_ADDRESS (127.0.0.1 by default), so the dev
|
|
# credentials in .env are not reachable from the LAN. Other containers still
|
|
# reach them through host.docker.internal. The browser on the host does too
|
|
# as long as the hosts file maps host.docker.internal to 127.0.0.1; if yours
|
|
# maps it to the LAN IP, set DEV_BIND_ADDRESS=0.0.0.0 (see .env.example).
|
|
|
|
services:
|
|
postgres:
|
|
ports:
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:${POSTGRES_HOST_PORT}:5432"
|
|
|
|
zitadel:
|
|
ports:
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:${ZITADEL_EXTERNAL_PORT}:8080"
|
|
|
|
# No edge in dev to put the login under Zitadel's own port, so it gets its
|
|
# own (ZITADEL_LOGIN_BASE_URL in .env points the browser at it).
|
|
zitadel-login:
|
|
ports:
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:${ZITADEL_LOGIN_HOST_PORT}:3000"
|
|
|
|
seaweedfs:
|
|
ports:
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:9333:9333" # master / admin UI
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:8888:8888" # filer
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:8333:8333" # S3 API
|
|
|
|
rabbitmq:
|
|
ports:
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:5672:5672" # AMQP
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:15672:15672" # management UI
|
|
|
|
jaeger:
|
|
ports:
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:16686:16686" # UI
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:4317:4317" # OTLP gRPC
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:4318:4318" # OTLP HTTP
|
|
|
|
# Optional Postgres UI: docker compose ... --profile tools up -d
|
|
pgadmin:
|
|
profiles: [tools]
|
|
image: dpage/pgadmin4:9.18
|
|
container_name: infra-pgadmin
|
|
environment:
|
|
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
|
|
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
|
|
PGADMIN_CONFIG_SERVER_MODE: "False"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
ports:
|
|
- "${DEV_BIND_ADDRESS:-127.0.0.1}:${PGADMIN_HOST_PORT}:80"
|
|
volumes:
|
|
- pgadmin_data:/var/lib/pgadmin
|
|
# Same rotation as compose.yml (YAML anchors don't cross files).
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
pgadmin_data:
|