mirror of
https://tangled.org/tranquil.farm/tranquil-pds
synced 2026-05-26 01:40:19 +00:00
Spins up a container with Tranquil running, but automatically uses incremental rebuilds for local dev. Signed-off-by: Trezy <tre@trezy.com>
143 lines
3.7 KiB
YAML
143 lines
3.7 KiB
YAML
services:
|
|
app:
|
|
profiles: [prod]
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: tranquil-pds
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
DATABASE_URL: postgres://postgres:postgres@db:5432/pds
|
|
volumes:
|
|
- ./config.toml:/etc/tranquil-pds/config.toml:ro
|
|
- blob_data:/var/lib/tranquil-pds/blobs
|
|
- store_data:/var/lib/tranquil-pds/store
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
|
|
app-dev:
|
|
profiles: [dev]
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.dev
|
|
command: >
|
|
sh -c '
|
|
cp /certs/pds.test.pem /usr/local/share/ca-certificates/pds.test.crt
|
|
update-ca-certificates
|
|
cargo watch -x "run -p tranquil-server --features native-tls-roots -- --config /app/config.dev.toml"
|
|
'
|
|
environment:
|
|
SERVER_HOST: "0.0.0.0"
|
|
SQLX_OFFLINE: "true"
|
|
PLC_DIRECTORY_URL: "http://plc:2582"
|
|
volumes:
|
|
- ./:/app
|
|
- cargo_target:/app/target
|
|
- cargo_registry:/usr/local/cargo/registry
|
|
- blob_data:/var/lib/tranquil-pds/blobs
|
|
- certs:/certs:ro
|
|
depends_on:
|
|
traefik:
|
|
condition: service_started
|
|
db:
|
|
condition: service_healthy
|
|
plc:
|
|
condition: service_started
|
|
|
|
frontend:
|
|
profiles: [prod]
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
image: tranquil-pds-frontend
|
|
ports:
|
|
- "8080:80"
|
|
depends_on:
|
|
- app
|
|
|
|
db:
|
|
image: postgres:18-alpine
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres
|
|
POSTGRES_DB: pds
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql
|
|
- ./scripts/init-dev-dbs.sql:/docker-entrypoint-initdb.d/init-dev-dbs.sql:ro
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres -d pds"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 5s
|
|
|
|
plc:
|
|
profiles: [dev]
|
|
build:
|
|
context: https://github.com/did-method-plc/did-method-plc.git
|
|
dockerfile: packages/server/Dockerfile
|
|
environment:
|
|
DB_CREDS_JSON: '{"username":"postgres","password":"postgres","host":"db","port":"5432","database":"plc"}'
|
|
ENABLE_MIGRATIONS: "true"
|
|
DB_MIGRATE_CREDS_JSON: '{"username":"postgres","password":"postgres","host":"db","port":"5432","database":"plc"}'
|
|
PORT: "2582"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
|
|
traefik:
|
|
profiles: [dev]
|
|
image: traefik:v3.4
|
|
entrypoint: ["/bin/sh", "-c"]
|
|
command:
|
|
- |
|
|
if [ ! -f /certs/pds.test.pem ]; then
|
|
apk add --no-cache openssl
|
|
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 \
|
|
-keyout /certs/pds.test-key.pem \
|
|
-out /certs/pds.test.pem \
|
|
-days 3650 -nodes \
|
|
-subj "/CN=pds.test" \
|
|
-addext "subjectAltName=DNS:pds.test,DNS:*.pds.test"
|
|
echo "Certs generated"
|
|
fi
|
|
exec traefik \
|
|
--providers.file.filename=/etc/traefik/dynamic.yaml \
|
|
--entrypoints.websecure.address=:443
|
|
ports:
|
|
- "443:443"
|
|
volumes:
|
|
- ./traefik.dev.yaml:/etc/traefik/dynamic.yaml:ro
|
|
- certs:/certs
|
|
networks:
|
|
default:
|
|
aliases:
|
|
- pds.test
|
|
|
|
prometheus:
|
|
profiles: [prod]
|
|
image: prom/prometheus:v3.8.0
|
|
ports:
|
|
- "9090:9090"
|
|
volumes:
|
|
- ./observability/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
|
|
- prometheus_data:/prometheus
|
|
command:
|
|
- "--config.file=/etc/prometheus/prometheus.yaml"
|
|
- "--storage.tsdb.path=/prometheus"
|
|
depends_on:
|
|
- app
|
|
|
|
volumes:
|
|
postgres_data:
|
|
blob_data:
|
|
store_data:
|
|
prometheus_data:
|
|
cargo_target:
|
|
cargo_registry:
|
|
certs:
|