Merge branch 'common-subtree'
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
data/
|
||||
data/
|
||||
world/
|
||||
|
||||
34
.gitlab/Makefile
Normal file
34
.gitlab/Makefile
Normal file
@@ -0,0 +1,34 @@
|
||||
SHELL := /bin/bash
|
||||
|
||||
PROJECT_NAME ?= $(shell git config --local remote.origin.url|sed -n 's#.*/\([^.]*\)\.git#\1#p')
|
||||
VERSION ?= $(shell cat VERSION)
|
||||
IMAGE ?= $(shell cat IMAGE):$(VERSION)
|
||||
IMAGE_LATEST ?= $(shell cat IMAGE):latest
|
||||
PWD ?= $(shell pwd)
|
||||
STASH ?= "common-update-stash"
|
||||
|
||||
include .gitlab/make/docker.makefile
|
||||
include .gitlab/make/helm.makefile
|
||||
include .gitlab/make/kaniko.makefile
|
||||
include .gitlab/make/truenas.makefile
|
||||
include .gitlab/make/git.makefile
|
||||
|
||||
.PHONY: warning
|
||||
warning:
|
||||
@printf "Running a potentially destructive command. If a conflict occurs, fix the conflict and re-run the command.\n"
|
||||
@printf "Cancel with ctrl + c within 3 seconds."
|
||||
@sleep 3
|
||||
|
||||
.PHONY: make-stash-drop
|
||||
make-stash-drop:
|
||||
@if [ ! -z "$$(git stash list | grep -r 'stash@{0}.*common')" ]; then git stash drop; fi
|
||||
|
||||
.PHONY: make-update
|
||||
make-update:
|
||||
@git subtree pull --prefix .gitlab --message "Merge update from Common" -q common main
|
||||
|
||||
.PHONY: make-push
|
||||
make-push: warning
|
||||
@make make-update
|
||||
@git subtree split --branch common/$(PROJECT_NAME) --prefix .gitlab
|
||||
@git push common common/$(PROJECT_NAME):common/$(PROJECT_NAME)
|
||||
10
.gitlab/README.md
Normal file
10
.gitlab/README.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Adding the "common" subtree as your .gitlab folder
|
||||
|
||||
```bash
|
||||
# Add the subtree as a remote
|
||||
git remote add common git@gitlab.ducoterra.net:services/common.git
|
||||
git subtree add --prefix .gitlab common main
|
||||
|
||||
# Now you can run the following to update
|
||||
make make-update
|
||||
```
|
||||
29
.gitlab/make/docker.makefile
Normal file
29
.gitlab/make/docker.makefile
Normal file
@@ -0,0 +1,29 @@
|
||||
.PHONY: docker-init
|
||||
docker-init:
|
||||
@touch VERSION
|
||||
@touch IMAGE
|
||||
|
||||
.PHONY: buildx-context
|
||||
buildx-context:
|
||||
docker buildx create --name container-builder --use --platform linux/amd64,linux/arm64
|
||||
|
||||
.PHONY: buildx-clear
|
||||
buildx-clear:
|
||||
docker buildx rm container-builder
|
||||
|
||||
.PHONY: build
|
||||
build:
|
||||
docker buildx build --load . -t $(IMAGE)
|
||||
@docker buildx build --load . -t $(IMAGE_LATEST)
|
||||
|
||||
.PHONY: push
|
||||
push:
|
||||
-make buildx-clear
|
||||
@make buildx-context
|
||||
docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE)
|
||||
@docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE_LATEST)
|
||||
|
||||
.PHONY: docker-release
|
||||
docker-release:
|
||||
@yq e ".services.minecraft.image = \"$(IMAGE)\"" -i docker-compose.yaml
|
||||
@make push
|
||||
5
.gitlab/make/git.makefile
Normal file
5
.gitlab/make/git.makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
.PHONY: git-release
|
||||
git-release:
|
||||
@git add .
|
||||
@git commit -m "Automated release for version $(VERSION)"
|
||||
@git tag $(VERSION)
|
||||
4
.gitlab/make/helm.makefile
Normal file
4
.gitlab/make/helm.makefile
Normal file
@@ -0,0 +1,4 @@
|
||||
.PHONY: helm-release
|
||||
helm-release:
|
||||
@yq e ".version = \"$(shell cat VERSION)\"" -i helm/Chart.yaml
|
||||
@yq e ".appVersion = \"$(shell cat VERSION)\"" -i helm/Chart.yaml
|
||||
0
.gitlab/make/kaniko.makefile
Normal file
0
.gitlab/make/kaniko.makefile
Normal file
3
.gitlab/make/truenas.makefile
Normal file
3
.gitlab/make/truenas.makefile
Normal file
@@ -0,0 +1,3 @@
|
||||
.PHONY: chart-release
|
||||
chart-release:
|
||||
@rsync -av $(CHART)/helm/ charts/$(CHART)/$(shell cat $(CHART)/VERSION)/
|
||||
14
Makefile
14
Makefile
@@ -1 +1,13 @@
|
||||
include .common/Makefile
|
||||
SHELL := /bin/bash
|
||||
|
||||
include .gitlab/Makefile
|
||||
|
||||
.PHONY: get-server
|
||||
get-server:
|
||||
@mkdir -p world
|
||||
@echo 'eula=true' > world/eula.txt
|
||||
@docker run -it -e SERVER_VERSION=1.17.1 -v $(PWD)/world:/downloads ducoterra/get-minecraft:latest
|
||||
|
||||
.PHONY: run
|
||||
run:
|
||||
docker-compose run --service-ports minecraft
|
||||
|
||||
55
README.md
55
README.md
@@ -1,61 +1,34 @@
|
||||
# Minecraft
|
||||
|
||||
## Getting server.jar
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## Running Locally
|
||||
|
||||
```bash
|
||||
docker-compose build minecraft
|
||||
docker-compose up minecraft
|
||||
# download the most recent version of minecraft
|
||||
make get-server
|
||||
|
||||
# Run the server
|
||||
docker-compose up
|
||||
```
|
||||
|
||||
## Uploading to Docker Hub
|
||||
|
||||
In docker-compose.yaml, update the image tag to:
|
||||
1. Update the version in the VERSION file.
|
||||
2. Build and push the new version
|
||||
|
||||
```yaml
|
||||
...
|
||||
services:
|
||||
minecraft:
|
||||
build: .
|
||||
image: <your_username>/minecraft:<version>-1
|
||||
ports:
|
||||
...
|
||||
```
|
||||
|
||||
then run
|
||||
|
||||
```bash
|
||||
docker-compose push
|
||||
```
|
||||
```bash
|
||||
make build
|
||||
make push
|
||||
```
|
||||
|
||||
## Running in kubernetes
|
||||
|
||||
In k8s/deploy.yaml, edit the deploy
|
||||
|
||||
```yaml
|
||||
...
|
||||
spec:
|
||||
containers:
|
||||
- name: minecraft
|
||||
image: <your image from above>
|
||||
ports:
|
||||
...
|
||||
```
|
||||
|
||||
Then run the following
|
||||
Requires helm v3. Edit values.yaml and run the following:
|
||||
|
||||
```bash
|
||||
kubectl apply -f k8s/pvc
|
||||
kubectl apply -f k8s
|
||||
helm upgrade --install minecraft
|
||||
```
|
||||
|
||||
Your minecraft server will be available on port 25565
|
||||
Your minecraft server will be available on port 25565 by default.
|
||||
|
||||
## Create a Backup
|
||||
|
||||
|
||||
13
docker-compose.yaml
Normal file
13
docker-compose.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
version: '3'
|
||||
services:
|
||||
minecraft:
|
||||
image: ducoterra/minecraft:1.0.2
|
||||
stdin_open: true
|
||||
tty: true
|
||||
volumes:
|
||||
- ./world:/mc_data
|
||||
ports:
|
||||
- 25565:25565
|
||||
environment:
|
||||
- MAX_RAM=1
|
||||
- MIN_RAM=1
|
||||
@@ -1,7 +1,6 @@
|
||||
apiVersion: v2
|
||||
name: minecraft
|
||||
description: A Minecraft server for kubernetes
|
||||
|
||||
# A chart can be either an 'application' or a 'library' chart.
|
||||
#
|
||||
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||
@@ -11,13 +10,11 @@ description: A Minecraft server for kubernetes
|
||||
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||
type: application
|
||||
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 1.1.0
|
||||
|
||||
version: 1.0.2
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
appVersion: 1.0.0
|
||||
appVersion: 1.0.2
|
||||
|
||||
@@ -23,13 +23,6 @@ spec:
|
||||
volumeMounts:
|
||||
- mountPath: /downloads
|
||||
name: data
|
||||
- name: download-server
|
||||
image: {{ .Values.get_server.image }}
|
||||
imagePullPolicy: Always
|
||||
command: ["bash", "-c", "curl -o server.jar $(cat SERVER_VERSION)"]
|
||||
volumeMounts:
|
||||
- mountPath: /downloads
|
||||
name: data
|
||||
containers:
|
||||
- name: {{ .Release.Name }}
|
||||
image: {{ .Values.image }}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
image: ducoterra/minecraft:latest
|
||||
get_server:
|
||||
image: ducoterra/get-minecraft:latest
|
||||
image: ducoterra/get-minecraft:2.0.0
|
||||
server_version: "1.17.1"
|
||||
port: 20101
|
||||
max_cpu: 4
|
||||
|
||||
Reference in New Issue
Block a user