synq-core-os/Dockerfile
2026-05-07 19:28:50 -07:00

52 lines
1 KiB
Docker
Executable file

# Build stage
FROM rust:1.85-slim AS builder
WORKDIR /app
# Install dependencies
RUN apt-get update && apt-get install -y \
libssl-dev \
pkg-config \
libpq-dev \
postgresql-client \
&& rm -rf /var/lib/apt/lists/*
# Install sqlx-cli for migrations
RUN cargo install sqlx-cli --no-default-features --features native-tls,postgres
# Copy manifests first for layer caching
COPY Cargo.toml Cargo.lock ./
COPY crates/*/Cargo.toml ./crates/
# Copy source
COPY . .
# Run migrations and build release
RUN sqlx migrate run || true
RUN cargo build --release
# Runtime stage
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y \
libssl3 \
ca-certificates \
libpq5 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy binaries
COPY --from=builder /app/target/release/synq-cli /app/
COPY --from=builder /app/migrations /app/migrations
# Data directories
RUN mkdir -p /app/data /app/keys /app/config
# Non-root user
RUN useradd -m -u 1000 synq && chown -R synq:synq /app
USER synq
EXPOSE 8080
CMD ["./synq-cli"]