simplify_truths/Dockerfile
2024-06-17 00:47:07 +02:00

42 lines
1.0 KiB
Docker

# Creates a new cargo project, copies the Cargo.toml and Cargo.lock files to the new project,
# builds the project, and then copies the built binary to a new image.
FROM rust:1.79 as build
RUN USER=root cargo new --bin simplify_truths
WORKDIR /simplify_truths
COPY ./Cargo.lock ./Cargo.lock
COPY ./Cargo.toml ./Cargo.toml
COPY ./derive ./derive
# this build step will cache your dependencies
RUN cargo build --release
RUN rm src/*.rs
COPY ./src ./src
RUN rm ./target/release/deps/simplify_truths*
RUN cargo build --release
FROM node:20.14.0 as spec
WORKDIR /spec
COPY ./spec .
RUN npm install
RUN USER=root npm install -g @typespec/compiler && npm install -g @redocly/cli
RUN npm run tsp-compile && npm run redoc-build
FROM debian
LABEL authors="Martin Berg Alstad"
# copy the build artifact from the build stage
COPY --from=build /simplify_truths/target/release/simplify_truths .
# copy the generated html file for REDOC documentation
COPY --from=spec /spec/dist/index.html ./openapi/index.html
EXPOSE 8000
CMD ["./simplify_truths"]