zinit 0.3.7

Process supervisor with dependency management
Documentation
# zinit test container
FROM rust:1-alpine AS builder

RUN apk add --no-cache musl-dev

WORKDIR /build
COPY . .

RUN cargo build --release --workspace

# Runtime image
FROM alpine:3.21

RUN apk add --no-cache \
    caddy \
    openssh-server \
    && mkdir -p /etc/zinit/services \
    && mkdir -p /var/run \
    && mkdir -p /root/.ssh \
    && chmod 700 /root/.ssh \
    && ssh-keygen -A

# Copy zinit binaries
COPY --from=builder /build/target/release/zinit-pid1 /usr/bin/
COPY --from=builder /build/target/release/zinit-server /usr/bin/
COPY --from=builder /build/target/release/zinit /usr/bin/

# Copy service definitions
COPY docker/services/ /etc/zinit/services/
COPY docker/Caddyfile /etc/caddy/Caddyfile

# Set root password for SSH testing (change in production!)
RUN echo 'root:zinit' | chpasswd

# Expose ports
EXPOSE 22 80

# Log level: info (default), debug, or trace for more verbosity
ENV ZINIT_LOG_LEVEL=debug

# zinit-pid1 as PID 1 (container mode)
ENTRYPOINT ["/usr/bin/zinit-pid1", "-c"]