22 Commits

Author SHA1 Message Date
5f0e0b41f7 switch to amazon corretto
All checks were successful
Minecraft Java Image / build-and-push (push) Successful in 18s
2025-11-07 10:02:48 -05:00
e038672457 fix bitnami java:24 missing issue
All checks were successful
Minecraft Java Image / build-and-push (push) Successful in 32s
2025-11-06 22:24:24 -05:00
c1ca80b09b use bitnami java image
Some checks failed
Minecraft Java Image / build-and-push-ddns (push) Failing after 15s
2025-07-16 00:10:09 -04:00
ed6638cebf add back creds
All checks were successful
Minecraft Java Image / build-and-push-ddns (push) Successful in 12s
2025-07-15 17:23:55 -04:00
3b62f0648a remove creds from build push action
Some checks failed
Minecraft Java Image / build-and-push-ddns (push) Failing after 23s
2025-07-15 17:20:50 -04:00
17be6f427d update pipeline branch to master
Some checks failed
Minecraft Java Image / build-and-push-ddns (push) Failing after 5s
2025-07-15 17:17:11 -04:00
d08e02a46c add gitea container build job 2025-07-15 17:13:42 -04:00
ducoterra
d9485d2fdf Merge update from Common 2021-12-13 12:58:41 -05:00
ducoterra
8096a291e6 Squashed '.gitlab/' changes from cf41f2e..16ee2f3
16ee2f3 Merge branch 'various-docker-fixes' into 'main'
5b3e196 fix docker build and remove release
4bf9d45 Merge branch 'prefix-docker-commands' into 'main'
91b77b3 don't reset head after subtree pull, it breaks things
66b4362 prefix all docker commands with docker-
ba2827a Merge branch 'allow-specify-branch' into 'main'
4de5558 ignore .gitlab
71ff227 Allow pulling specific branch with BRANCH_NAME
6430416 Merge branch 'add-helm-and-kube' into 'main'
bce675f Add install, upgrade, and uninstall for helm
1532f30 Add kubectl.makefile

git-subtree-dir: .gitlab
git-subtree-split: 16ee2f3ddcc1235cb4a6b7a38c82d52859e8408f
2021-12-13 12:58:40 -05:00
ducoterra
4a80310c33 setenv is deprecated 2021-12-13 12:58:05 -05:00
ducoterra
d77bfb210a add testcraft and camcraft values 2021-12-13 12:57:58 -05:00
ducoterra
1f7af65220 quote server version 2021-12-13 12:57:42 -05:00
ducoterra
44975664b6 Squashed '.gitlab/' changes from 731ada6..cf41f2e
cf41f2e Merge branch 'remove-push' into 'main'
ef81c95 Remove unused commands
81c19cc Don't use remote common
ea1e248 Update subtree add README
756cc8c Remove make-push
a4b7e34 Squash subtree on pull
524c5be Fix PROJECT_NAME variable
47dea48 Add automated commit to chart-release

git-subtree-dir: .gitlab
git-subtree-split: cf41f2e7768da3a340b86debcddc949b588448c7
2021-11-02 15:48:46 -04:00
ducoterra
05206686ad Merge update from Common 2021-11-02 15:48:46 -04:00
ducoterra
2de53def19 Remove .common 2021-11-02 12:46:40 -04:00
ducoterra
a85a7aa84f Merge branch 'common-subtree' 2021-11-02 12:45:47 -04:00
Reese
0d2235b6a3 Merge branch 'common-makefile' into 'master'
Allow custom server versions

See merge request services/minecraft_vanilla!1
2021-10-31 03:05:14 +00:00
Reese
dbe0d47f99 Merge branch 'master' into 'common-makefile'
# Conflicts:
#   helm/questions.yaml
2021-10-31 03:05:11 +00:00
ducoterra
c7c547c80f Switch to common Makefile
Rather than writing our own Makefile use the common one.
2021-10-30 22:46:34 -04:00
ducoterra
a403f6f068 Merge commit '32cd04c7ec7aacf8e3a402e3aed310a6ea94b586' as '.common' 2021-10-30 22:43:08 -04:00
ducoterra
32cd04c7ec Squashed '.common/' content from commit f187522
git-subtree-dir: .common
git-subtree-split: f18752299d
2021-10-30 22:43:08 -04:00
ducoterra
a820e9a297 Allow custom server versions
Allow user to specify server version. Download on server init.
2021-10-30 21:14:00 -04:00
17 changed files with 130 additions and 67 deletions

View File

@@ -0,0 +1,32 @@
name: Minecraft Java Image
run-name: Build and Push the Minecraft Java Image
on:
push:
paths:
- Dockerfile
- IMAGE
- VERSION
- .gitea/workflows/minecraft.yaml
schedule:
- cron: '@daily'
jobs:
build-and-push:
runs-on: ubuntu-latest
if: gitea.ref == 'refs/heads/master'
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Login to Gitea Registry
uses: docker/login-action@v2
with:
registry: gitea.reeseapps.com
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build and push Docker image
uses: https://github.com/docker/build-push-action@v5
with:
context: ${{ gitea.workspace }}
file: ${{ gitea.workspace }}/Dockerfile
push: true
tags: "gitea.reeseapps.com/services/minecraft:latest,gitea.reeseapps.com/services/minecraft:${{gitea.sha}}"
no-cache: true

1
.gitlab/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.gitlab

View File

@@ -1,34 +1,21 @@
SHELL := /bin/bash
PROJECT_NAME ?= $(shell git config --local remote.origin.url|sed -n 's#.*/\([^.]*\)\.git#\1#p')
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"
MAKE_BRANCH ?= main
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
include .gitlab/make/kubectl.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
# git subtree add --prefix .gitlab --squash --message "Merge update from Common" -q git@gitlab.ducoterra.net:services/common.git main
.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)
@git subtree pull --prefix .gitlab --squash --message "Merge update from Common" -q git@gitlab.ducoterra.net:services/common.git $(MAKE_BRANCH)

View File

@@ -2,8 +2,7 @@
```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
git subtree add --prefix .gitlab git@gitlab.ducoterra.net:services/common.git main --squash --message "Add Common .gitlab Subtree"
# Now you can run the following to update
make make-update

View File

@@ -3,27 +3,21 @@ docker-init:
@touch VERSION
@touch IMAGE
.PHONY: buildx-context
buildx-context:
docker buildx create --name container-builder --use --platform linux/amd64,linux/arm64
.PHONY: docker-buildx-context
docker-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: docker-buildx-clear
docker-buildx-clear:
@docker buildx rm container-builder
.PHONY: build
build:
docker buildx build --load . -t $(IMAGE)
@docker buildx build --load . -t $(IMAGE_LATEST)
.PHONY: docker-build
docker-build:
docker build . -t $(IMAGE)
.PHONY: push
push:
-make buildx-clear
@make buildx-context
.PHONY: docker-push
docker-push:
-make docker-buildx-clear
@make docker-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

View File

@@ -2,3 +2,15 @@
helm-release:
@yq e ".version = \"$(shell cat VERSION)\"" -i helm/Chart.yaml
@yq e ".appVersion = \"$(shell cat VERSION)\"" -i helm/Chart.yaml
.PHONY: install
install: set-namespace
helm install $(PROJECT_NAME) ./helm --set image=$(IMAGE)
.PHONY: upgrade
upgrade: set-namespace
helm upgrade $(PROJECT_NAME) ./helm --set image=$(IMAGE)
.PHONY: uninstall
uninstall: set-namespace
helm uninstall $(PROJECT_NAME)

View File

@@ -0,0 +1,11 @@
.PHONY: set-namespace
set-namespace:
kubectl config set contexts.$(shell kubectl config current-context).namespace $(shell cat NAMESPACE)
.PHONY: create-regcred
create-regcred:
@kubectl create secret docker-registry regcred \
--docker-server=registry.ducoterra.net \
--docker-username=$(shell vault kv get -field username secret/duconet/basic-auth) \
--docker-password='$(shell vault kv get -field password secret/duconet/basic-auth)' \
--docker-email=$(shell vault kv get -field username secret/duconet/basic-auth)

View File

@@ -1,3 +1,5 @@
.PHONY: chart-release
chart-release:
@rsync -av $(CHART)/helm/ charts/$(CHART)/$(shell cat $(CHART)/VERSION)/
@git add charts/$(CHART)
@git commit -m "Automated release for chart $(CHART) version $(shell cat $(CHART)/VERSION)" -e

View File

@@ -1,10 +1,7 @@
FROM openjdk:latest
# Read more about Corretto here:
# https://hub.docker.com/_/amazoncorretto
FROM docker.io/amazoncorretto:21
RUN groupadd -r minecraft -g 2000
RUN useradd --no-log-init minecraft -u 2000 -g 2000 -m
WORKDIR /mc_data
RUN chown -R minecraft:minecraft .
USER minecraft
# Copy files only if they don't yet exist (server.jar, server.properties, etc) and start the server
CMD java -Xmx"$MAX_RAM"G -Xms"$MIN_RAM"G -jar ./server.jar nogui
CMD ["sh", "-c" , "java -Xmx${MAX_RAM}G -Xms${MIN_RAM}G -jar ./server.jar nogui"]

View File

@@ -2,12 +2,27 @@ SHELL := /bin/bash
include .gitlab/Makefile
.PHONY: build
build:
@podman build -f Dockerfile -t localhost/minecraft:latest
.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
@podman run \
-it \
--rm \
-e SERVER_VERSION=1.21.10 \
-v $(PWD)/world:/downloads \
--security-opt label=disable \
--userns keep-id \
docker.io/ducoterra/get-minecraft:latest
.PHONY: run
run:
docker-compose run --service-ports minecraft
docker compose -f compose.yaml up minecraft
.PHONY: stop
stop:
docker compose -f compose.yaml down

View File

@@ -3,11 +3,17 @@
## Running Locally
```bash
# Build
make build
# download the most recent version of minecraft
make get-server
# Run the server
docker-compose up
make run
# Stop the server
make stop
```
## Uploading to Docker Hub
@@ -30,13 +36,13 @@ helm upgrade --install minecraft
Your minecraft server will be available on port 25565 by default.
## Create a Backup
### Create a Backup in Kubernetes
```bash
kubectl cp <pod_name>:/mc_data <backup>
```
## Restore from Backup
### Restore from Backup in Kubernetes
```bash
kubectl cp <backup> <pod_name>:/mc_data

View File

@@ -1 +1 @@
1.0.2
1.0.3

View File

@@ -1,7 +1,6 @@
version: '3'
services:
minecraft:
image: ducoterra/minecraft:1.0.2
image: localhost/minecraft:latest
stdin_open: true
tty: true
volumes:
@@ -11,3 +10,6 @@ services:
environment:
- MAX_RAM=1
- MIN_RAM=1
security_opt:
- "label=disable"
userns_mode: keep-id

View File

@@ -19,7 +19,7 @@ spec:
imagePullPolicy: Always
env:
- name: SERVER_VERSION
value: {{ .Values.server_version }}
value: {{ .Values.server_version | quote }}
volumeMounts:
- mountPath: /downloads
name: data

View File

@@ -1 +0,0 @@
kubectl config set current-context k3os-alpha.dnet-ducoterra-minecraft

View File

@@ -1,7 +1,10 @@
image: hub.ducoterra.net/ducoterra/minecraft:1.16.4
image: ducoterra/minecraft:latest
get_server:
image: ducoterra/get-minecraft:2.0.0
server_version: "1.16.4"
port: 20101
max_cpu: 8
max_ram: 8
max_cpu: 4
max_ram: 4
server_props: |
max-tick-time=60000
generator-settings=

View File

@@ -1,7 +1,10 @@
image: hub.ducoterra.net/ducoterra/minecraft:1.16.4
port: 25566
image: ducoterra/minecraft:latest
get_server:
image: ducoterra/get-minecraft:2.0.0
server_version: "1.18"
port: 20103
max_cpu: 8
max_ram: 6
max_ram: 8
server_props: |
max-tick-time=60000
generator-settings=
@@ -16,7 +19,7 @@ server_props: |
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=amplified
level-type=default
hardcore=false
enable-command-block=false
max-players=20
@@ -28,15 +31,15 @@ server_props: |
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=64
view-distance=32
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=512
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=This is gonna be interesting
enable-rcon=false
motd=Welcome to testcraft!
enable-rcon=false