aboutsummaryrefslogtreecommitdiff
path: root/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile42
1 files changed, 42 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..37e6bb7
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,42 @@
+# syntax=docker/dockerfile:1.7
+
+ARG RUSTC_VERSION=stable
+
+FROM clux/muslrust:${RUSTC_VERSION} AS build
+
+WORKDIR /source
+
+RUN cargo new september
+
+WORKDIR /source/september
+
+COPY Cargo.toml Cargo.lock ./
+
+RUN --mount=type=cache,target=/root/.cargo/registry \
+ --mount=type=cache,target=/root/.cargo/git \
+ cargo build --release
+
+COPY .git ./.git
+COPY src ./src
+COPY build.rs ./build.rs
+COPY default.css .
+
+RUN --mount=type=cache,target=/root/.cargo/registry \
+ --mount=type=cache,target=/root/.cargo/git \
+ cargo build --release --bin september
+RUN set -eux; \
+ bin_path="$(find /source/september/target -type f -path '*/release/september' | head -n 1)"; \
+ test -n "${bin_path}"; \
+ strip -s "${bin_path}"; \
+ cp "${bin_path}" /source/september/september
+RUN strip -s /source/september/september
+
+FROM scratch AS runtime
+
+WORKDIR /september
+
+COPY --from=build /source/september/september ./september
+
+EXPOSE 80
+
+ENTRYPOINT ["./september"]