Skip to content

Commit fa13c2f

Browse files
committed
feat: add Docker release workflow docs
1 parent 5dabbad commit fa13c2f

2 files changed

Lines changed: 23 additions & 17 deletions

File tree

Dockerfile

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM rust:1.82-slim AS builder
4-
WORKDIR /app
3+
FROM debian:bookworm-slim AS downloader
4+
ARG VERSION=latest
5+
ENV BINARY_NAME=database-replicator-linux-x64-binary
6+
ENV RELEASE_ROOT=https://github.com/serenorg/database-replicator/releases
57

6-
# Install build dependencies for OpenSSL / libpq bindings
7-
RUN apt-get update && \
8-
apt-get install -y --no-install-recommends pkg-config libssl-dev libpq-dev && \
9-
rm -rf /var/lib/apt/lists/*
8+
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates && rm -rf /var/lib/apt/lists/*
109

11-
# Cache dependencies
12-
COPY Cargo.toml Cargo.lock ./
13-
COPY src ./src
14-
COPY README.md .
15-
RUN cargo build --release --bin database-replicator
10+
RUN set -eux; \
11+
if [ "$VERSION" = "latest" ]; then \
12+
URL="$RELEASE_ROOT/latest/download/$BINARY_NAME"; \
13+
else \
14+
URL="$RELEASE_ROOT/download/$VERSION/$BINARY_NAME"; \
15+
fi; \
16+
curl -fL "$URL" -o /tmp/database-replicator && \
17+
chmod +x /tmp/database-replicator
1618

1719
FROM debian:bookworm-slim
1820
LABEL org.opencontainers.image.title="database-replicator" \
@@ -24,7 +26,7 @@ RUN apt-get update && \
2426
rm -rf /var/lib/apt/lists/* && \
2527
useradd -m replicator
2628

27-
COPY --from=builder /app/target/release/database-replicator /usr/local/bin/database-replicator
29+
COPY --from=downloader /tmp/database-replicator /usr/local/bin/database-replicator
2830
USER replicator
2931
ENTRYPOINT ["database-replicator"]
3032
CMD ["--help"]

README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,18 +233,22 @@ The binary will be available at `target/release/database-replicator`.
233233

234234
### Docker Image
235235

236-
Build a container image with the latest source:
236+
Build an image from the latest GitHub release (default) or a specific tag:
237237

238238
```bash
239+
# latest release asset
239240
docker build -t serenorg/database-replicator:latest .
241+
242+
# specific version
243+
docker build --build-arg VERSION=v5.3.20 -t serenorg/database-replicator:v5.3.20 .
240244
```
241245

242246
Run the CLI inside the container (pass connection strings via arguments or environment variables):
243247

244248
```bash
245-
docker run --rm -it \
246-
serenorg/database-replicator:latest \
247-
validate --source "postgresql://user:pass@source/db" --target "postgresql://user:pass@target/db"
249+
docker run --rm -it serenorg/database-replicator:latest \
250+
validate --source "postgresql://user:pass@source/db" \
251+
--target "postgresql://user:pass@target/db"
248252
```
249253

250254
Mount local config files if needed:
@@ -253,7 +257,7 @@ Mount local config files if needed:
253257
docker run --rm -it \
254258
-v "$PWD:/work" \
255259
serenorg/database-replicator:latest \
256-
init --source @/work/source.txt --target @/work/target.txt
260+
init --source "$(cat /work/source.txt)" --target "$(cat /work/target.txt)"
257261
```
258262

259263
### Prerequisites

0 commit comments

Comments
 (0)