Skip to content
This repository was archived by the owner on May 27, 2026. It is now read-only.

Commit edd0125

Browse files
committed
build: dockerize
1 parent 320c5d2 commit edd0125

3 files changed

Lines changed: 97 additions & 0 deletions

File tree

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Push Lagrange.Milky Docker
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
paths:
7+
- Lagrange.Codec/**
8+
- Lagrange.Core/**
9+
- Lagrange.Proto/**
10+
- Lagrange.Proto.Generator/**
11+
- Lagrange.Milky/**
12+
pull_request:
13+
branches: [ main ]
14+
paths:
15+
- Lagrange.Codec/**
16+
- Lagrange.Core/**
17+
- Lagrange.Proto/**
18+
- Lagrange.Proto.Generator/**
19+
- Lagrange.Milky/**
20+
workflow_dispatch:
21+
22+
jobs:
23+
build:
24+
runs-on: ubuntu-latest
25+
26+
steps:
27+
- uses: actions/checkout@v4
28+
29+
- name: Set up QEMU
30+
uses: docker/setup-qemu-action@v3
31+
32+
- name: Set up Docker Buildx
33+
uses: docker/setup-buildx-action@v3
34+
35+
- name: Login to Github Registry
36+
uses: docker/login-action@v3
37+
if: github.event_name != 'pull_request'
38+
with:
39+
registry: ghcr.io
40+
username: ${{ github.repository_owner }}
41+
password: ${{ secrets.GITHUB_TOKEN }}
42+
43+
- name: Extract metadata (tags, labels) for Docker
44+
id: meta
45+
uses: docker/metadata-action@v5
46+
with:
47+
images: |
48+
ghcr.io/${{ github.repository_owner }}/lagrange.milky
49+
tags: |
50+
type=edge
51+
type=sha,event=branch
52+
type=ref,event=tag
53+
54+
- name: Build and push
55+
uses: docker/build-push-action@v5
56+
with:
57+
context: .
58+
file: "Lagrange.Milky/Resources/Dockerfile"
59+
push: ${{ github.event_name != 'pull_request' }}
60+
tags: ${{ steps.meta.outputs.tags }}
61+
labels: ${{ steps.meta.outputs.labels }}
62+
platforms: linux/amd64
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build
2+
3+
WORKDIR /root/build
4+
ARG TARGETARCH
5+
6+
COPY --link . /root/build
7+
8+
RUN dotnet publish Lagrange.Milky -p:DebugType="none" -c Release -a $TARGETARCH -o /root/out
9+
10+
# ===
11+
12+
FROM mcr.microsoft.com/dotnet/runtime-deps:9.0-alpine
13+
14+
WORKDIR /app/data
15+
16+
COPY --link --from=tianon/gosu /gosu /usr/local/bin/
17+
COPY --link Lagrange.Milky/Resources/docker-entrypoint.sh /app/bin/docker-entrypoint.sh
18+
RUN chmod +x /app/bin/docker-entrypoint.sh
19+
20+
COPY --link --from=build /root/out /app/bin
21+
22+
ENTRYPOINT ["/app/bin/docker-entrypoint.sh"]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
3+
USER_ID=${UID:-0}
4+
5+
if [ "$USER_ID" -ne 0 ]; then
6+
chown -R $USER_ID /app/data
7+
useradd --shell /bin/sh -u $USER_ID -o -c "" -m user
8+
usermod -a -G root user
9+
export HOME=/home/user
10+
exec /usr/sbin/gosu user /app/bin/Lagrange.Milky "$@"
11+
else
12+
exec /app/bin/Lagrange.Milky "$@"
13+
fi

0 commit comments

Comments
 (0)