diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..a96e5522 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git/ +target/ diff --git a/.github/workflows/containers.yml b/.github/workflows/containers.yml new file mode 100644 index 00000000..6b46e88b --- /dev/null +++ b/.github/workflows/containers.yml @@ -0,0 +1,62 @@ +name: Build and upload Docker image + +on: + push: + tags: + - "*.*.*" + branches: + - main + pull_request: + branches: + - main + +env: + REGISTRY: ghcr.io/${{ github.repository_owner }} + +jobs: + builds-linux: + runs-on: ubuntu-latest + + strategy: + matrix: + target: [tap_aggregator] + + permissions: + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + # list of Docker images to use as base name for tags + images: | + ${{ env.REGISTRY }}/${{matrix.target}} + # generate Docker tags based on the following events/attributes + tags: | + type=schedule + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}}.{{minor}}.{{patch}} + type=semver,pattern={{major}} + type=sha + + - name: Log in to the Container registry + uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: ./ + push: true + tags: ${{ steps.meta.outputs.tags }} + file: Dockerfile.${{ matrix.target }} diff --git a/Dockerfile.tap_aggregator b/Dockerfile.tap_aggregator new file mode 100644 index 00000000..00e417ed --- /dev/null +++ b/Dockerfile.tap_aggregator @@ -0,0 +1,17 @@ +FROM rust:1.74-bookworm as build + +WORKDIR /root +COPY . . + +RUN cargo build --release --bin tap_aggregator + +######################################################################################## + +FROM debian:bookworm-slim + +RUN apt-get update && apt-get install -y --no-install-recommends \ + openssl ca-certificates \ + && rm -rf /var/lib/apt/lists/* +COPY --from=build /root/target/release/tap_aggregator /usr/local/bin/tap_aggregator + +ENTRYPOINT [ "/usr/local/bin/tap_aggregator" ]