add docker image

This commit is contained in:
mii443
2024-08-31 21:30:41 +09:00
parent dfb09e014a
commit 486ef72d2f
2 changed files with 66 additions and 0 deletions

47
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,47 @@
on:
push:
branches-ignore:
- '**'
tags:
- 'v*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
name: Checkout
- uses: docker/metadata-action@v3
id: meta
with:
images: ghcr.io/mii443/signaling-server
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: mii443
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM lukemathwalker/cargo-chef:latest-rust-1.80.1 AS chef
WORKDIR app
FROM chef AS planner
COPY . .
RUN cargo chef prepare --recipe-path recipe.json
FROM chef AS builder
COPY --from=planner /app/recipe.json recipe.json
RUN apt-get update && apt-get install -y --no-install-recommends libssl-dev pkg-config gcc && apt-get -y clean
RUN cargo chef cook --release --recipe-path recipe.json
COPY . .
RUN cargo b -r --bin signaling-server
FROM ubuntu:22.04 AS runtime
WORKDIR /signaling-server
RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates libssl-dev && apt-get -y clean
COPY --from=builder /app/target/release/signaling-server /usr/local/bin
ENTRYPOINT ["/usr/local/bin/signaling-server"]