mentorenwahl/frontend/Dockerfile

58 lines
2.3 KiB
Docker
Raw Permalink Normal View History

2022-11-25 22:21:21 +00:00
FROM codycraven/sassc as css
WORKDIR /usr/src/scss
RUN mkdir dist
WORKDIR /usr/src/scss/src
2022-11-27 13:29:31 +00:00
RUN mkdir lib
ARG BULMA_VERSION="0.9.4"
RUN wget -qO- https://github.com/jgthms/bulma/releases/download/${BULMA_VERSION}/bulma-${BULMA_VERSION}.zip | unzip -d ./lib -
2022-11-25 22:21:21 +00:00
COPY ./scss .
RUN find . -name "*.scss" -type f | xargs -I % sh -c 'sassc % > ../dist/$(basename -- "%" .scss).css'
2022-11-04 20:23:36 +00:00
FROM lukemathwalker/cargo-chef:latest-rust-1.65.0 as chef
2022-10-31 08:47:26 +00:00
WORKDIR /usr/src/frontend
2022-11-04 20:23:36 +00:00
FROM chef as planner
RUN mkdir src && touch src/main.rs
COPY ./Cargo.toml .
RUN cargo chef prepare --recipe-path recipe.json
FROM chef as builder
WORKDIR /usr/local/bin
ARG TRUNK_VERSION="v0.16.0"
RUN wget -qO- https://github.com/thedodd/trunk/releases/download/${TRUNK_VERSION}/trunk-x86_64-unknown-linux-gnu.tar.gz | tar -xzf-
RUN rustup target add wasm32-unknown-unknown
2022-11-23 19:17:14 +00:00
WORKDIR /usr/src/frontend
2022-11-04 20:23:36 +00:00
COPY --from=planner /usr/src/frontend/recipe.json .
2022-11-23 19:17:14 +00:00
COPY ./.cargo ./.cargo
2022-11-04 20:23:36 +00:00
RUN cargo chef cook --release --recipe-path recipe.json
COPY ./graphql ./graphql
COPY ./src ./src
2022-11-27 13:29:31 +00:00
RUN cargo build --release
COPY --from=css /usr/src/scss/dist ./assets/css
COPY ./index.html ./index.html
2022-11-04 20:23:36 +00:00
RUN trunk build --release
2022-11-05 20:27:49 +00:00
FROM tdewolff/minify as public
WORKDIR /usr/src/public
COPY --from=builder /usr/src/frontend/dist .
RUN minify . -r -o .
2022-11-13 18:03:46 +00:00
FROM alpine as binaryen
WORKDIR /tmp
ARG BINARYEN_VERSION="110"
RUN wget -qO- https://github.com/WebAssembly/binaryen/releases/download/version_${BINARYEN_VERSION}/binaryen-version_${BINARYEN_VERSION}-x86_64-linux.tar.gz | tar -xzf-
RUN cp ./binaryen-version_${BINARYEN_VERSION}/bin/wasm-opt /usr/local/bin
RUN rm -rf ./binaryen-version_${BINARYEN_VERSION}
2022-11-12 21:50:06 +00:00
WORKDIR /usr/src/public
COPY --from=public /usr/src/public .
RUN find . -name "*.wasm" -type f | xargs -I % wasm-opt % -o % -O --intrinsic-lowering -Oz
2023-02-25 13:38:14 +00:00
FROM docker.io/openresty/openresty:1.21.4.1-0-alpine as runner
2022-11-21 18:48:53 +00:00
LABEL maintainer="Dominic Grimm <dominic@dergrimm.net>" \
org.opencontainers.image.description="Frontend of Mentorenwahl" \
2022-11-25 22:21:21 +00:00
org.opencontainers.image.licenses="GPL-3.0" \
2022-11-21 18:48:53 +00:00
org.opencontainers.image.source="https://git.dergrimm.net/mentorenwahl/mentorenwahl" \
org.opencontainers.image.url="https://git.dergrimm.net/mentorenwahl/mentorenwahl"
2023-02-25 13:38:14 +00:00
COPY ./nginx.conf /usr/local/openresty/nginx/conf/nginx.conf
2022-11-12 21:50:06 +00:00
COPY --from=binaryen /usr/src/public /var/www/html