mirror of
https://github.com/hulthe/inkopslista.git
synced 2026-08-03 23:11:28 +02:00
Add dockerfile
This commit is contained in:
+80
@@ -0,0 +1,80 @@
|
||||
##################
|
||||
### BASE STAGE ###
|
||||
##################
|
||||
FROM rust:1.92.0 as base
|
||||
|
||||
# Install build dependencies
|
||||
# RUN cargo install --locked trunk@^0.18.8 strip_cargo_version
|
||||
RUN cargo install --locked strip_cargo_version@0.0.3
|
||||
# RUN rustup target add wasm32-unknown-unknown
|
||||
RUN rustup target add x86_64-unknown-linux-musl
|
||||
|
||||
# required by "ring"
|
||||
RUN apt-get update && apt-get install -y musl-tools
|
||||
|
||||
WORKDIR /app
|
||||
RUN mkdir gui srv lib
|
||||
|
||||
###########################
|
||||
### STRIP-VERSION STAGE ###
|
||||
###########################
|
||||
FROM base AS strip-version
|
||||
|
||||
COPY Cargo.lock Cargo.toml ./
|
||||
COPY ./gui/Cargo.toml ./gui/
|
||||
COPY ./srv/Cargo.toml ./srv/
|
||||
COPY ./lib/Cargo.toml ./lib/
|
||||
RUN strip_cargo_version
|
||||
|
||||
###################
|
||||
### BUILD STAGE ###
|
||||
###################
|
||||
FROM base AS build
|
||||
|
||||
RUN cargo init --lib gui
|
||||
RUN cargo init --bin srv
|
||||
RUN cargo init --lib lib
|
||||
|
||||
COPY --from=strip-version /app/gui/Cargo.toml /app/gui/
|
||||
COPY --from=strip-version /app/srv/Cargo.toml /app/srv/
|
||||
COPY --from=strip-version /app/lib/Cargo.toml /app/lib/
|
||||
COPY --from=strip-version /app/Cargo.toml /app/Cargo.lock /app/
|
||||
|
||||
# Compile dependencies first, so that they are cached by Docker
|
||||
WORKDIR /app/srv
|
||||
RUN cargo build --release --target x86_64-unknown-linux-musl
|
||||
|
||||
# TODO: build gui for wasm
|
||||
# WORKDIR /app/gui
|
||||
# RUN cargo build --release --target wasm32-unknown-unknown
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
WORKDIR /app/srv
|
||||
RUN cargo build --release --target x86_64-unknown-linux-musl
|
||||
RUN strip /app/target/x86_64-unknown-linux-musl/release/inkopslista-srv
|
||||
|
||||
# TODO: build gui for wasm
|
||||
# WORKDIR /app/gui
|
||||
# RUN trunk build --release
|
||||
|
||||
########################
|
||||
### PRODUCTION STAGE ###
|
||||
########################
|
||||
FROM scratch
|
||||
|
||||
ENV RUST_LOG="info"
|
||||
ENV ROCKET_ADDRESS="0.0.0.0"
|
||||
ENV ROCKET_PORT="8000"
|
||||
|
||||
WORKDIR /
|
||||
|
||||
# Copy application binary
|
||||
COPY --from=build /app/target/x86_64-unknown-linux-musl/release/inkopslista-srv /
|
||||
|
||||
# TODO:
|
||||
# # Copy static web files
|
||||
# COPY --from=build /app/frontend/dist /www
|
||||
|
||||
CMD ["/inkopslista-srv"]
|
||||
Reference in New Issue
Block a user