File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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
1719FROM debian:bookworm-slim
1820LABEL 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
2830USER replicator
2931ENTRYPOINT ["database-replicator" ]
3032CMD ["--help" ]
Original file line number Diff line number Diff 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
239240docker 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
242246Run 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
250254Mount local config files if needed:
@@ -253,7 +257,7 @@ Mount local config files if needed:
253257docker 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
You can’t perform that action at this time.
0 commit comments