diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b323fec --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +target +.git +.gitignore \ No newline at end of file diff --git a/Dockerfile-auth b/Dockerfile-auth new file mode 100644 index 0000000..6fe36ad --- /dev/null +++ b/Dockerfile-auth @@ -0,0 +1,25 @@ +FROM rust:1.80.0-alpine3.20 AS chef +USER root +# remove the line below when switching to >=rust:1.70.0. sparse mode is planned to be the default in Rust 1.70.0 +# ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse +RUN apk add --no-cache musl-dev & cargo install cargo-chef +WORKDIR /microservice-poc + +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder +COPY --from=planner /microservice-poc/recipe.json recipe.json +# Build dependencies - this is the caching Docker layer! +RUN cargo chef cook --release --recipe-path recipe.json +# Build application +RUN apk add --no-cache protoc +COPY . . +RUN cargo build --release --bin auth + +# We do not need the Rust toolchain to run the binary! +FROM debian:buster-slim AS runtime +WORKDIR /microservice-poc +COPY --from=builder /microservice-poc/target/release/auth /usr/local/bin +ENTRYPOINT ["/usr/local/bin/auth"] \ No newline at end of file diff --git a/Dockerfile-health b/Dockerfile-health new file mode 100644 index 0000000..259b66c --- /dev/null +++ b/Dockerfile-health @@ -0,0 +1,26 @@ +FROM rust:1.80.0-alpine3.20 AS chef +USER root +# remove the line below when switching to >=rust:1.70.0. sparse mode is planned to be the default in Rust 1.70.0 +# ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse +RUN apk add --no-cache musl-dev & cargo install cargo-chef +WORKDIR /microservice-project + +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder +COPY --from=planner /microservice-project/recipe.json recipe.json +# Build dependencies - this is the caching Docker layer! +RUN cargo chef cook --release --recipe-path recipe.json +# Build application +RUN apk add --no-cache protoc +COPY . . +RUN cargo build --release --bin health-check + +# We do not need the Rust toolchain to run the binary! +FROM debian:buster-slim AS runtime +WORKDIR /microservice-project +COPY --from=builder /microservice-project/target/release/health-check /usr/local/bin +ENV AUTH_SERVICE_HOST_NAME=auth +ENTRYPOINT ["/usr/local/bin/health-check"] \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..05cac38 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,19 @@ +version: "3.9" +services: + health-check: + image: itsscb/health-check + build: + context: . + dockerfile: Dockerfile-health + restart: "always" + depends_on: + auth: + condition: service_started + auth: + image: itsscb/auth + build: + context: . + dockerfile: Dockerfile-auth + restart: "always" + ports: + - "50051:50051"