From 3fd8f7ebbfdbee07141bcb14129240d12f5bfe40 Mon Sep 17 00:00:00 2001 From: Trezy Date: Fri, 15 May 2026 14:00:29 -0500 Subject: [PATCH] chore: add app service with cargo-watch Spins up a container with Tranquil running, but automatically uses incremental rebuilds for local dev. Signed-off-by: Trezy --- Dockerfile.dev | 20 ++++++++++++++++++++ config.dev.toml | 30 ++++++++++++++++++++++++++++++ docker-compose.yaml | 31 +++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 Dockerfile.dev create mode 100644 config.dev.toml diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..9a50b5e --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,20 @@ +FROM rust:1.92-alpine + +RUN apk add --no-cache \ + ca-certificates \ + musl-dev \ + pkgconfig \ + openssl-dev \ + openssl-libs-static \ + mold \ + clang \ + protoc + +RUN cargo install cargo-watch + +ENV RUSTFLAGS="-C linker=clang -C link-arg=-fuse-ld=mold" +ENV SQLX_OFFLINE=true + +WORKDIR /app + +CMD ["cargo", "watch", "-x", "run -p tranquil-server -- --config /app/config.dev.toml"] diff --git a/config.dev.toml b/config.dev.toml new file mode 100644 index 0000000..9f42492 --- /dev/null +++ b/config.dev.toml @@ -0,0 +1,30 @@ +[server] +hostname = "pds.test" +allow_http_proxy = true +invite_code_required = false +disable_rate_limiting = true + +[frontend] +enabled = true +dir = "/app/frontend/public" + +[database] +url = "postgres://postgres:postgres@db:5432/pds" + +[storage] +path = "/var/lib/tranquil-pds/blobs" + +[plc] +directory_url = "http://plc:2582" + +[email] +from_address = "noreply@pds.test" +from_name = "Tranquil PDS (Dev)" + +[email.smarthost] +host = "mailpit" +port = 1025 +tls = "none" + +[secrets] +allow_insecure = true diff --git a/docker-compose.yaml b/docker-compose.yaml index a8daa14..8c46346 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -17,6 +17,35 @@ services: 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: @@ -108,4 +137,6 @@ volumes: blob_data: store_data: prometheus_data: + cargo_target: + cargo_registry: certs: