chore: optimize dockerfile

This commit is contained in:
Maulana Sodiqin
2025-05-26 23:41:00 +07:00
parent f1e4e02697
commit cca9aa6318
2 changed files with 28 additions and 19 deletions
+27 -18
View File
@@ -1,17 +1,29 @@
FROM rust:1.85-slim-bullseye AS builder FROM rust:1.85-alpine AS builder
RUN apt-get update && apt-get install -y \ RUN apk add --no-cache \
curl \ curl \
build-essential \ musl-dev \
libssl-dev \ openssl-dev \
libssl1.1 \ openssl-libs-static \
pkg-config \ pkgconfig
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app WORKDIR /app
COPY Cargo.toml Cargo.lock ./ COPY Cargo.toml Cargo.lock ./
RUN mkdir -p imphnen-backend/src imphnen-cms/src imphnen-dimentorin/src \
imphnen-entities/src imphnen-gacha/src imphnen-gateway/src \
imphnen-iam/src imphnen-libs/src imphnen-middleware/src \
imphnen-utils/src tests/src && \
echo "fn main() {}" > imphnen-backend/src/main.rs && \
find . -name "src" -type d -exec sh -c 'echo "// dummy" > "$1/lib.rs"' _ {} \;
RUN echo '[package]\nname = "tests"\nversion = "0.1.0"\nedition = "2021"' > tests/Cargo.toml
RUN echo -e '[package]\nname = "tests"\nversion = "0.1.0"\nedition = "2021"' > tests/Cargo.toml
COPY imphnen-backend ./imphnen-backend COPY imphnen-backend ./imphnen-backend
COPY imphnen-cms ./imphnen-cms COPY imphnen-cms ./imphnen-cms
COPY imphnen-dimentorin ./imphnen-dimentorin COPY imphnen-dimentorin ./imphnen-dimentorin
@@ -24,15 +36,12 @@ COPY imphnen-middleware ./imphnen-middleware
COPY imphnen-utils ./imphnen-utils COPY imphnen-utils ./imphnen-utils
COPY tests ./tests COPY tests ./tests
RUN cargo fetch RUN RUSTFLAGS="-C target-cpu=generic -C opt-level=s -C panic=abort -C codegen-units=1 -C strip=symbols" \
cargo build -p imphnen-backend --release && \
strip target/release/api && \
upx --best --lzma target/release/api 2>/dev/null || true
RUN cargo build -p imphnen-backend --release \ FROM scratch AS runner
&& strip target/release/api COPY --from=builder /app/target/release/api /api
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
FROM gcr.io/distroless/cc AS runner ENTRYPOINT ["/api"]
WORKDIR /app
COPY --from=builder /app/target/release/api .
CMD ["/app/api"]
+1 -1
View File
@@ -98,7 +98,7 @@ For production deployment:
2. **Run the Docker container**: 2. **Run the Docker container**:
```sh ```sh
docker run -d --env-file .env -p 3000:3000 imphnen-backend docker run --name imphnen-backend -d --env-file .env -p 3000:3000 imphnen-backend
``` ```
Adjust the port and environment variables as needed. Adjust the port and environment variables as needed.