mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2024-11-26 22:00:26 +00:00
Add Docker Support (#2486)
* chore(docker): add build workflow * chore(docker): update gradle image * chore(docker): this really shouldnt be running on raspberry pi's right now. * chore(docker): not sure why we need unzip here * chore(docker): attempt to add nodejs to allow the handbook to build * chore(docker): whoops, needs to be done during build * chore(docker): i dont know if this is going to work * chore(docker): replace my username with repo org as I am no longer testing this * chore(docker): version will change in the future, so fix it now.
This commit is contained in:
parent
eeaccf32c4
commit
f871f261e1
51
.github/workflows/build-container.yml
vendored
Normal file
51
.github/workflows/build-container.yml
vendored
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
name: Build Docker Container
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Project
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Generate Docker Meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
id: meta
|
||||||
|
with:
|
||||||
|
images: ghcr.io/${{ github.repository_owner }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
type=semver,pattern={{major}}
|
||||||
|
type=sha
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Setup Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3.1.0
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3.0.0
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and Push Docker image
|
||||||
|
uses: docker/build-push-action@v5.2.0
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
platforms: linux/amd64
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -64,6 +64,7 @@ tmp/
|
|||||||
|
|
||||||
/*.jar
|
/*.jar
|
||||||
/*.sh
|
/*.sh
|
||||||
|
!entrypoint.sh
|
||||||
|
|
||||||
GM Handbook*.txt
|
GM Handbook*.txt
|
||||||
handbook.html
|
handbook.html
|
||||||
|
38
Dockerfile
Normal file
38
Dockerfile
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Builder
|
||||||
|
FROM gradle:jdk17-alpine as builder
|
||||||
|
|
||||||
|
RUN apk add --update nodejs npm
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
COPY ./ /app/
|
||||||
|
|
||||||
|
RUN gradle jar --no-daemon
|
||||||
|
|
||||||
|
# Fetch Data
|
||||||
|
FROM bitnami/git:2.43.0-debian-11-r1 as data
|
||||||
|
|
||||||
|
ARG DATA_REPOSITORY=https://gitlab.com/YuukiPS/GC-Resources.git
|
||||||
|
ARG DATA_BRANCH=4.0
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN git clone --branch ${DATA_BRANCH} --depth 1 ${DATA_REPOSITORY}
|
||||||
|
|
||||||
|
# Result Container
|
||||||
|
FROM amazoncorretto:17-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy built assets
|
||||||
|
COPY --from=builder /app/grasscutter-*.jar /app/grasscutter.jar
|
||||||
|
COPY --from=builder /app/keystore.p12 /app/keystore.p12
|
||||||
|
|
||||||
|
# Copy the resources
|
||||||
|
COPY --from=data /app/GC-Resources/Resources /app/resources/
|
||||||
|
|
||||||
|
# Copy startup files
|
||||||
|
COPY ./entrypoint.sh /app/
|
||||||
|
|
||||||
|
CMD [ "sh", "/app/entrypoint.sh" ]
|
||||||
|
|
||||||
|
EXPOSE 80 443 8888 22102
|
3
entrypoint.sh
Normal file
3
entrypoint.sh
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#/bin/sh
|
||||||
|
|
||||||
|
java -jar /app/grasscutter.jar
|
Loading…
Reference in New Issue
Block a user