Use multi step build to limit the docker image size (#416)
* Use multi step build to limit the image size This change replace the Dockerfile with a multi step build to avoid huge image size (the new image should be around 130Mo including all layers), compared to more that 1Go with the full build chain. It's also more safe. This image does not include cargo (not needed in production), so the old Dockerfile is available and renamed Dockerfile.slim for those who use Docker for development setup. * Use correct path for local repository * Use sleep between chmod and execution
This commit is contained in:
parent
671c340aa8
commit
0490b698cb
27
Dockerfile
27
Dockerfile
|
@ -1,6 +1,7 @@
|
|||
FROM rust:1-stretch
|
||||
FROM rust:1-stretch as builder
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
gettext \
|
||||
postgresql-client \
|
||||
libpq-dev \
|
||||
|
@ -10,17 +11,37 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||
make \
|
||||
openssl \
|
||||
libssl-dev
|
||||
|
||||
WORKDIR /scratch
|
||||
COPY script/wasm-deps.sh .
|
||||
RUN chmod a+x ./wasm-deps.sh && ./wasm-deps.sh
|
||||
RUN chmod a+x ./wasm-deps.sh && sleep 1 && ./wasm-deps.sh
|
||||
|
||||
WORKDIR /app
|
||||
COPY Cargo.toml Cargo.lock rust-toolchain ./
|
||||
RUN cargo install diesel_cli --no-default-features --features postgres --version '=1.3.0'
|
||||
RUN cargo install cargo-web
|
||||
|
||||
COPY . .
|
||||
RUN chmod a+x ./script/plume-front.sh && ./script/plume-front.sh
|
||||
|
||||
RUN chmod a+x ./script/plume-front.sh && sleep 1 && ./script/plume-front.sh
|
||||
RUN cargo install --path ./ --force --no-default-features --features postgres
|
||||
RUN cargo install --path plume-cli --force --no-default-features --features postgres
|
||||
RUN cargo clean
|
||||
|
||||
FROM debian:stretch-slim
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
libpq5 \
|
||||
libssl1.1
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=builder /app /app
|
||||
COPY --from=builder /usr/local/cargo/bin/plm /bin/
|
||||
COPY --from=builder /usr/local/cargo/bin/plume /bin/
|
||||
COPY --from=builder /usr/local/cargo/bin/diesel /bin/
|
||||
|
||||
CMD ["plume"]
|
||||
|
||||
EXPOSE 7878
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
FROM rust:1-stretch
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
gettext \
|
||||
postgresql-client \
|
||||
libpq-dev \
|
||||
git \
|
||||
curl \
|
||||
gcc \
|
||||
make \
|
||||
openssl \
|
||||
libssl-dev
|
||||
|
||||
WORKDIR /scratch
|
||||
COPY script/wasm-deps.sh .
|
||||
RUN chmod a+x ./wasm-deps.sh && sleep 1 && ./wasm-deps.sh
|
||||
|
||||
WORKDIR /app
|
||||
COPY Cargo.toml Cargo.lock rust-toolchain ./
|
||||
RUN cargo install diesel_cli --no-default-features --features postgres --version '=1.3.0'
|
||||
RUN cargo install cargo-web
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN chmod a+x ./script/plume-front.sh && sleep 1 && ./script/plume-front.sh
|
||||
RUN cargo install --path ./ --force --no-default-features --features postgres
|
||||
RUN cargo install --path plume-cli --force --no-default-features --features postgres
|
||||
RUN cargo clean
|
||||
|
||||
CMD ["plume"]
|
||||
|
||||
EXPOSE 7878
|
Loading…
Reference in New Issue