Lucy bind paths + LAN host pins replaced with env defaults. Repository URLs → git.sulkta.com. Audit-changelog scaffolding stripped from inline comments (technical reasoning preserved). README sheds marketing scaffolding. AI-speak in load-bearing prompts/SOULs left alone — that IS the product.
53 lines
1.9 KiB
Docker
53 lines
1.9 KiB
Docker
# Multi-stage build for skald. Postgres ships in the same image
|
|
# until the tool stabilises; to split, swap the runtime base to
|
|
# debian:bookworm-slim, drop entrypoint.sh, point DATABASE_URL at
|
|
# an external pg.
|
|
#
|
|
# Build context is the workspace root: `docker build -t skald:latest .`
|
|
|
|
FROM rust:1.95-bookworm AS builder
|
|
WORKDIR /build
|
|
|
|
# Dependency-cache layer: copy manifests + vendored path-dep first,
|
|
# build stubs, then drop in real sources. clawdforge is a path dep
|
|
# resolved at workspace load time.
|
|
COPY Cargo.toml Cargo.lock ./
|
|
COPY skald-core/Cargo.toml skald-core/Cargo.toml
|
|
COPY skald/Cargo.toml skald/Cargo.toml
|
|
COPY vendor vendor
|
|
COPY migrations migrations
|
|
|
|
RUN mkdir -p skald-core/src skald/src \
|
|
&& echo 'pub fn placeholder() {}' > skald-core/src/lib.rs \
|
|
&& echo 'fn main() {}' > skald/src/main.rs \
|
|
&& cargo build --release -p skald \
|
|
&& rm -rf skald-core/src skald/src
|
|
|
|
COPY skald-core skald-core
|
|
COPY skald skald
|
|
|
|
RUN touch skald-core/src/lib.rs skald/src/main.rs \
|
|
&& cargo build --release -p skald
|
|
|
|
# ─── runtime ──────────────────────────────────────────────────────
|
|
FROM pgvector/pgvector:pg17 AS runtime
|
|
|
|
# tini for sane signal handling / zombie reaping under PID 1.
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends tini ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=builder /build/target/release/skald /usr/local/bin/skald
|
|
COPY --from=builder /build/migrations /var/lib/skald/migrations
|
|
COPY entrypoint.sh /usr/local/bin/skald-entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/skald-entrypoint.sh
|
|
|
|
ENV RUST_LOG=info \
|
|
SKALD_LISTEN=0.0.0.0:7780 \
|
|
POSTGRES_USER=skald \
|
|
POSTGRES_DB=skald
|
|
|
|
EXPOSE 7780
|
|
|
|
ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/skald-entrypoint.sh"]
|
|
CMD ["serve"]
|