diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..c42a35d8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +/target +.git +.gitignore +.github +*.md +Dockerfile +.dockerignore +LICENSE-APACHE +LICENSE-MIT +*.sh +.editorconfig +.gitattributes \ No newline at end of file diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 399c44dd..29bfe619 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -322,3 +322,33 @@ jobs: name: msi-${{ matrix.arch }} path: artifacts/ if-no-files-found: error + docker: + name: Docker Build + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64,linux/386,linux/arm/v7 + push: true + tags: | + ghcr.io/${{ github.repository }}:latest + ghcr.io/${{ github.repository }}:${{ github.sha }} diff --git a/.gitignore b/.gitignore index 05386a8f..fe36f504 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,5 @@ $RECYCLE.BIN/ *.lnk ### Custom... ### -Dockerfile lcov.info -*.pcap \ No newline at end of file +*.pcap diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..ad96da93 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM rust:1.85-slim AS builder + +# Install build dependencies for both X11 and Wayland +RUN apt-get update && apt-get install -y \ + libfreetype6-dev \ + libexpat1-dev \ + libpcap-dev \ + libasound2-dev \ + libfontconfig1-dev \ + libgtk-3-dev \ + pkg-config \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /usr/src/sniffnet +COPY . . + +RUN cargo build --release + +# Runtime stage +FROM debian:bookworm-slim + +# Install runtime dependencies for both X11 and Wayland +RUN apt-get update && apt-get install -y \ + libfreetype6 \ + libexpat1 \ + libpcap0.8 \ + libasound2 \ + libfontconfig1 \ + libgtk-3-0 \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /usr/src/sniffnet/target/release/sniffnet /usr/local/bin/sniffnet + +ENTRYPOINT ["sniffnet"]