feat: docker container

This commit is contained in:
Marco Cadetg
2025-02-22 11:32:37 +01:00
parent 2496bb84d5
commit 8f6e37cd64
4 changed files with 86 additions and 2 deletions

12
.dockerignore Normal file
View File

@@ -0,0 +1,12 @@
/target
.git
.gitignore
.github
*.md
Dockerfile
.dockerignore
LICENSE-APACHE
LICENSE-MIT
*.sh
.editorconfig
.gitattributes

View File

@@ -322,3 +322,27 @@ jobs:
name: msi-${{ matrix.arch }}
path: artifacts/
if-no-files-found: error
docker:
name: Docker Build
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- 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:
push: true
tags: |
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ github.sha }}

3
.gitignore vendored
View File

@@ -55,6 +55,5 @@ $RECYCLE.BIN/
*.lnk
### Custom... ###
Dockerfile
lcov.info
*.pcap
*.pcap

49
Dockerfile Normal file
View File

@@ -0,0 +1,49 @@
FROM rust:1.85-slim AS builder
# Install sniffnet build dependencies
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/*
# Create a new empty shell project
WORKDIR /usr/src/sniffnet
COPY . .
# Build for release
RUN cargo build --release
# Runtime stage
FROM debian:bookworm-slim
# Install runtime dependencies including Wayland
RUN apt-get update && apt-get install -y \
libfreetype6 \
libexpat1 \
libpcap0.8 \
libasound2 \
libfontconfig1 \
libgtk-3-0 \
libwayland-client0 \
libwayland-cursor0 \
libwayland-egl1 \
libxkbcommon0 \
mesa-utils \
libegl1 \
libvulkan1 \
&& rm -rf /var/lib/apt/lists/*
# Copy the built binary
COPY --from=builder /usr/src/sniffnet/target/release/sniffnet /usr/local/bin/sniffnet
# Set environment variables for Wayland
ENV GDK_BACKEND=wayland
ENV WAYLAND_DISPLAY=$WAYLAND_DISPLAY
ENV XDG_RUNTIME_DIR=/tmp
ENTRYPOINT ["sniffnet"]