feat: create docker image for server only

This commit is contained in:
Ricardo Paes 2024-10-15 16:59:35 -03:00
parent a1e1f55a29
commit 0c22c363e2
3 changed files with 57 additions and 3 deletions

50
.github/workflows/docker-server.yml vendored Normal file
View File

@ -0,0 +1,50 @@
name: Docker Server
on:
push:
tags:
- "v*.*.*"
jobs:
build_deploy:
name: Build and Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ekzhang/bore-server
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v3
with:
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
target: server
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Docker meta - name: Docker meta
id: meta id: meta
@ -44,6 +44,7 @@ jobs:
push: true push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
target: bore
- name: Image digest - name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }} run: echo ${{ steps.docker_build.outputs.digest }}

View File

@ -1,10 +1,13 @@
FROM rust:alpine as builder FROM rust:alpine AS builder
WORKDIR /home/rust/src WORKDIR /home/rust/src
RUN apk --no-cache add musl-dev RUN apk --no-cache add musl-dev
COPY . . COPY . .
RUN cargo install --path . RUN cargo install --path .
FROM scratch FROM scratch AS bore
COPY --from=builder /usr/local/cargo/bin/bore . COPY --from=builder /usr/local/cargo/bin/bore .
USER 1000:1000 USER 1000:1000
ENTRYPOINT ["./bore"] ENTRYPOINT ["./bore"]
FROM bore AS server
CMD ["server"]