From c48833ce85daa24fa31f58263b4e7f487493b746 Mon Sep 17 00:00:00 2001 From: pan93412 Date: Sun, 3 Mar 2024 20:02:37 +0800 Subject: [PATCH 1/2] Add Dockerfile for deployment --- .dockerignore | 2 ++ Dockerfile | 54 ++++++++++++++++++++++++++++++++++++++++++++ docker-entrypoint.sh | 4 ++++ 3 files changed, 60 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-entrypoint.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0437565 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +data/ +Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..523cfa7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,54 @@ +FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef +WORKDIR /app + +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder +COPY --from=planner /app/recipe.json recipe.json +# Build dependencies - this is the caching Docker layer! +RUN cargo chef cook --release --recipe-path recipe.json +# Build application +COPY . . +RUN cargo build --release --bin stats + +FROM rust AS diesel-builder + +RUN apt update && \ + apt install -y libsqlite3-dev && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /app +RUN cargo install diesel_cli --no-default-features --features sqlite --root /app + +# We do not need the Rust toolchain to run the binary! +FROM debian:bookworm-slim AS runtime +WORKDIR /app + +ENV APP_URL=http://127.0.0.1:5775 +ENV SERVICE_PORT=5775 +ENV DATABASE_URL=/app/data/stats.sqlite +ENV PROCESSING_BATCH_SIZE=500 +# comma-seperated +ENV CORS_DOMAINS=http://localhost:5775 + +RUN apt update && \ + apt install -y libsqlite3-0 && \ + rm -rf /var/lib/apt/lists/* + +# Copy necessary files to /data +WORKDIR /app + +ADD https://git.io/GeoLite2-City.mmdb /app/data/GeoLite2-City.mmdb +ADD https://github.com/PrismaPhonic/filter-cities-by-country/raw/master/cities5000.txt /app/data/cities5000.txt + +COPY migrations/ /app/migrations +COPY ui/ /app/ui +COPY --from=diesel-builder /app/bin/diesel /app +COPY --from=builder /app/target/release/stats /app +COPY --chmod=0755 docker-entrypoint.sh /app + +ENV PATH="/app:${PATH}" + +ENTRYPOINT ["/app/docker-entrypoint.sh"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..62400ff --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +diesel migration run +stats From 49259451684bf71d411ac879c17aa3633593c8a6 Mon Sep 17 00:00:00 2001 From: pan93412 Date: Sun, 17 Mar 2024 15:19:20 +0800 Subject: [PATCH 2/2] chore: Simplify dockerfile --- Dockerfile | 4 ++-- docker-entrypoint.sh | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 523cfa7..b1409be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,8 +47,8 @@ COPY migrations/ /app/migrations COPY ui/ /app/ui COPY --from=diesel-builder /app/bin/diesel /app COPY --from=builder /app/target/release/stats /app -COPY --chmod=0755 docker-entrypoint.sh /app ENV PATH="/app:${PATH}" +EXPOSE ${SERVICE_PORT} -ENTRYPOINT ["/app/docker-entrypoint.sh"] +CMD diesel migration run && stats diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh deleted file mode 100644 index 62400ff..0000000 --- a/docker-entrypoint.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -diesel migration run -stats