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: