diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..18e17ff --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +target/ +repo/ +artifacts/ +.git/ +.idea/ +.vagrant/ +sample_data/ +*.md diff --git a/.gitignore b/.gitignore index bd0f2c0..15a48d0 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,5 @@ sample_data .vagrant /.output.txt +/repo/ +/artifacts/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a022a51 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +# Stage 1: Build +FROM rust:1-bookworm AS builder + +RUN apt-get update && apt-get install -y \ + build-essential \ + pkg-config \ + libssl-dev \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /build +COPY . . + +RUN cargo build --release -p pkg6depotd -p pkg6repo + +# Stage 2: Runtime +FROM debian:bookworm-slim + +RUN apt-get update && apt-get install -y \ + ca-certificates \ + libssl3 \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /build/target/release/pkg6depotd /usr/local/bin/ +COPY --from=builder /build/target/release/pkg6repo /usr/local/bin/ +COPY docker/pkg6depotd.kdl /etc/pkg6depotd.kdl + +RUN mkdir -p /var/pkg/repo + +EXPOSE 8080 + +ENTRYPOINT ["pkg6depotd", "--config", "/etc/pkg6depotd.kdl", "--no-daemon"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5adf3af --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +services: + pkg6depotd: + build: . + container_name: pkg6depotd + restart: unless-stopped + volumes: + - ./repo:/var/pkg/repo:ro + expose: + - "8080" + environment: + - VIRTUAL_HOST=pkg.solstice-ci.org + - VIRTUAL_PORT=8080 + networks: + - solstice-ci_core + +networks: + solstice-ci_core: + external: true diff --git a/docker/pkg6depotd.kdl b/docker/pkg6depotd.kdl new file mode 100644 index 0000000..07599fc --- /dev/null +++ b/docker/pkg6depotd.kdl @@ -0,0 +1,14 @@ +server { + bind "0.0.0.0:8080" + workers 4 +} + +repository { + root "/var/pkg/repo" + mode "readonly" +} + +telemetry { + service-name "pkg6depotd" + log-format "json" +}