The smokesignal.events web application
1# syntax=docker/dockerfile:1.4
2FROM rust:1.90-slim-bookworm AS builder
3
4RUN apt-get update && apt-get install -y \
5 pkg-config \
6 libssl-dev \
7 && rm -rf /var/lib/apt/lists/*
8
9WORKDIR /app
10COPY Cargo.toml build.rs ./
11
12ARG FEATURES=embed,s3
13ARG TEMPLATES=./templates
14ARG STATIC=./static
15ARG GIT_HASH=0
16ENV GIT_HASH=$GIT_HASH
17
18COPY src ./src
19COPY migrations ./migrations
20COPY static ./static
21COPY i18n ./i18n
22COPY ${TEMPLATES} ./templates
23COPY ${STATIC} ./static
24
25RUN cargo build --release --bin smokesignal --no-default-features --features ${FEATURES}
26
27FROM gcr.io/distroless/cc-debian12
28
29LABEL org.opencontainers.image.title="Smoke Signal"
30LABEL org.opencontainers.image.description="An event and RSVP management application."
31LABEL org.opencontainers.image.licenses="MIT"
32LABEL org.opencontainers.image.authors="Nick Gerakines <nick.gerakines@gmail.com>"
33LABEL org.opencontainers.image.source="https://tangled.sh/@smokesignal.events/smokesignal"
34LABEL org.opencontainers.image.version="1.0.2"
35
36WORKDIR /app
37COPY --from=builder /app/target/release/smokesignal /app/smokesignal
38COPY --from=builder /app/static ./static
39
40ENV HTTP_STATIC_PATH=/app/static
41ENV HTTP_PORT=8080
42ENV RUST_LOG=info
43ENV RUST_BACKTRACE=full
44
45ENTRYPOINT ["/app/smokesignal"]