Skip to content

Commit 5dca68b

Browse files
authored
Merge pull request #80 from frnandu/chore/rust-dockerfile
Add rust Dockerfile
2 parents 2f31557 + e9df9b6 commit 5dca68b

5 files changed

Lines changed: 75 additions & 6 deletions

File tree

rust/.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
target/

rust/Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/Dockerfile

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Build stage
2+
FROM rust:1.91-bookworm AS builder
3+
4+
WORKDIR /build
5+
6+
# Copy workspace files
7+
COPY Cargo.toml Cargo.lock ./
8+
COPY rustfmt.toml ./
9+
10+
# Copy all workspace members
11+
COPY server ./server
12+
COPY api ./api
13+
COPY impls ./impls
14+
COPY auth-impls ./auth-impls
15+
16+
# Build the application in release mode
17+
RUN cargo build --locked --release --bin vss-server
18+
19+
# Runtime stage
20+
FROM debian:bookworm-slim
21+
22+
# Install runtime dependencies and create an unprivileged runtime user
23+
RUN apt-get update && \
24+
apt-get install -y --no-install-recommends \
25+
ca-certificates \
26+
libssl3 \
27+
&& rm -rf /var/lib/apt/lists/* \
28+
&& groupadd --system vss \
29+
&& useradd --system --gid vss --home-dir /app --shell /usr/sbin/nologin vss \
30+
&& mkdir -p /app \
31+
&& chown vss:vss /app
32+
33+
WORKDIR /app
34+
35+
# Copy the compiled binary from builder
36+
COPY --from=builder --chown=vss:vss /build/target/release/vss-server /app/vss-server
37+
38+
# Copy default configuration file
39+
COPY --chown=vss:vss server/vss-server-config.toml /app/vss-server-config.toml
40+
41+
USER vss:vss
42+
43+
ENV VSS_BIND_ADDRESS=0.0.0.0:8080
44+
45+
EXPOSE 8080
46+
47+
# Run the server with the config file
48+
CMD ["/app/vss-server", "/app/vss-server-config.toml"]

rust/auth-impls/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ sigs = [ "bitcoin_hashes", "hex-conservative", "secp256k1" ]
1212
api = { path = "../api" }
1313
async-trait = "0.1.77"
1414
base64 = { version = "0.22.1", optional = true, default-features = false, features = ["std"] }
15-
bitcoin_hashes = { version = "0.19", optional = true, default-features = false }
15+
bitcoin_hashes = { version = "1.0", optional = true, default-features = false }
1616
hex-conservative = { version = "1.0", optional = true, default-features = false }
1717
openssl = { version = "0.10.75", optional = true, default-features = false }
1818
secp256k1 = { version = "0.31", optional = true, default-features = false, features = [ "global-context" ] }

rust/docker-compose.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
11
services:
2+
vss-server:
3+
build:
4+
context: .
5+
dockerfile: Dockerfile
6+
ports:
7+
- "8080:8080"
8+
environment:
9+
VSS_BIND_ADDRESS: 0.0.0.0:8080
10+
VSS_PSQL_ADDRESS: postgres:5432
11+
depends_on:
12+
postgres:
13+
condition: service_healthy
14+
networks:
15+
- app-network
16+
217
postgres:
318
image: postgres:15
419
environment:
@@ -9,6 +24,11 @@ services:
924
- postgres-data:/var/lib/postgresql/data
1025
ports:
1126
- "5432:5432"
27+
healthcheck:
28+
test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
29+
interval: 5s
30+
timeout: 5s
31+
retries: 5
1232
networks:
1333
- app-network
1434

0 commit comments

Comments
 (0)