Files
receipts/Containerfile
Dustin C. Hatch 545baa1c36 Use Rocket's Figment for configuration
Instead of reading our own TOML file for configuration, we can hook into
Rocket's [built-in configuration system][0].  Although it doesn't matter
much right now, it may if we end up using Rocket's SQL [database
integration][1], because it uses the same mechanism.  Without making
this change, we would end up with two configuration files in that case.

[0]: https://rocket.rs/guide/v0.5/configuration/#extracting-values
[1]: https://rocket.rs/guide/v0.5/state/#databases
2025-03-09 07:07:55 -05:00

50 lines
1.0 KiB
Docker

FROM git.pyrocufflink.net/containerimages/dch-base AS build
RUN --mount=type=cache,target=/var/cache \
microdnf install -y \
--setopt persistdir=/var/cache/dnf \
--setopt install_weak_deps=0 \
cargo \
openssl-devel \
&& :
WORKDIR /build
COPY Cargo.* .
COPY src src
RUN --mount=type=cache,target=/root/.cargo \
cargo build --release --locked
FROM git.pyrocufflink.net/containerimages/dch-base AS esbuild
RUN --mount=type=cache,target=/var/cache \
microdnf install -y \
--setopt persistdir=/var/cache/dnf \
--setopt install_weak_deps=0 \
npm \
&& :
WORKDIR /build
COPY js .
RUN --mount=type=cache,target=/root/.cargo \
npm ci && npm run build
FROM git.pyrocufflink.net/containerimages/dch-base
COPY --from=build /build/target/release/receipts /usr/local/bin
COPY --from=esbuild /build/dist /usr/local/share/receipts/static
COPY templates /usr/local/share/receipts/templates
WORKDIR /usr/local/share/receipts
ENTRYPOINT ["/usr/local/bin/receipts"]
ENV ROCKET_CONFIG=/etc/receipts/config.toml