43f85d73d5c989f00702e5a586bdfe0911dc3e36 / Containerfile
Raw
# syntax=docker/dockerfile:1
FROM rust:1-bookworm AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config libsqlite3-dev build-essential \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /build
COPY Cargo.toml Cargo.lock ./
COPY frogue/Cargo.toml frogue/Cargo.toml
COPY migration/Cargo.toml migration/Cargo.toml
RUN mkdir -p frogue/src migration/src \
&& echo 'fn main() {}' > frogue/src/main.rs \
&& touch frogue/src/lib.rs migration/src/lib.rs \
&& cargo build --release -p frogue || true
COPY frogue/ frogue/
COPY migration/ migration/
RUN touch frogue/src/main.rs frogue/src/lib.rs migration/src/lib.rs && cargo build --release -p frogue
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
git ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& useradd --system --create-home --uid 1000 frogue \
&& mkdir -p /data/repos \
&& chown -R frogue:frogue /data
COPY --from=builder /build/target/release/frogue /usr/local/bin/frogue
USER frogue
ENV FROGUE_BIND_ADDR=0.0.0.0:6565 \
FROGUE_SSH_BIND_ADDR=0.0.0.0:2222 \
DATABASE_URL=sqlite:///data/frogue.sqlite?mode=rwc \
FROGUE_REPO_ROOT=/data/repos
# you NEED to set FROGUE_SESSION_SECRET, FROGUE_SSH_HOST and FROGUE_PUBLIC_URL
# podman run -e FROGUE_SESSION_SECRET=... ...
EXPOSE 6565/tcp 2222/tcp
VOLUME /data
# Version injected at build time by `dev/build-container.sh`
ARG FROGUE_VERSION=0.1.0-dev
LABEL org.opencontainers.image.title="frogue" \
org.opencontainers.image.version="${FROGUE_VERSION}"
ENTRYPOINT ["/usr/local/bin/frogue"]