Skip to content

Commit

Permalink
feat: add Dockerfile and workflow (#1)
Browse files Browse the repository at this point in the history
* chore: add Dockerfile

* chore: update Dockerfile

* feat: add docker image CD workflow
  • Loading branch information
TimothyYe authored Mar 3, 2024
1 parent b9693bc commit f05361c
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Docker Image CD

on:
push:
tags:
- '*'

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Get git tag
id: tag
uses: dawidd6/action-get-tag@v1
with:
strip_v: true
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/[email protected]
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}
- name: Build and push the docker image
uses: docker/build-push-action@v3
with:
platforms: linux/amd64,linux/arm64
push: true
tags: |
timothyye/knockd:latest
timothyye/knockd:${{steps.tag.outputs.tag}}
ghcr.io/timothyye/knockd:latest
ghcr.io/timothyye/knockd:${{steps.tag.outputs.tag}}
build-args: |
VERSION=v${{ steps.tag.outputs.tag }}
27 changes: 27 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Use the Rust official image for the build stage
FROM rust:latest as builder

# Add target for musl
RUN rustup target add x86_64-unknown-linux-musl

COPY ./knockd /knockd

WORKDIR /knockd

# Build your application on the musl target.
# This creates a statically linked executable.
RUN cargo build --release --target=x86_64-unknown-linux-musl

FROM alpine

# Install iptables
RUN apk add --no-cache iptables

# Create a symbolic link from /sbin/iptables to /usr/sbin/iptables
RUN ln -s /sbin/iptables /usr/sbin/iptables

# Copy the binary from the builder stage
COPY --from=builder /knockd/target/x86_64-unknown-linux-musl/release/knockd /

# Command to run
CMD ["/knockd"]

0 comments on commit f05361c

Please sign in to comment.