Modernized TShock config

pull/10/head
Jef Roosens 2021-04-23 15:16:51 +02:00
parent 608b4fbe90
commit 3411f3d0a9
Signed by: Jef Roosens
GPG Key ID: B580B976584B5F30
5 changed files with 30 additions and 98 deletions

View File

@ -1,4 +1,4 @@
version: '2.8' version: '2.4'
services: services:
app: app:

View File

@ -1,29 +1,15 @@
# Copyright (C) 2020 Jef Roosens # What version of TShock to use
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Build arguments
RELEASE_TAG= RELEASE_TAG=
# Environment variables # What world size to create:
# 1 for small, 2 for medium, 3 for large
AUTOCREATE=2 AUTOCREATE=2
# Mount points # Mount points for the data directories
CONFIG_DIR= # By default, it creates volumes
LOGS_DIR= CONFIG_DIR=config
WORLDS_DIR= LOGS_DIR=logs
WORLDS_DIR=worlds
# Other # The port to publish the server on
PORT=7777 PORT=7777

View File

@ -1,49 +1,27 @@
# Copyright (C) 2020 Jef Roosens FROM alpine:3.13.5 AS base
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
FROM alpine:latest AS base
# Build arguments # Build arguments
ARG RELEASE_TAG ARG RELEASE_TAG
# Add unzip & curl
RUN apk update && apk add --no-cache unzip curl
WORKDIR /terraria WORKDIR /terraria
# Download & unzip RUN apk update && apk add --no-cache unzip curl && \
# TODO convert this to jq? curl -s "https://api.github.com/repos/Pryaxis/TShock/releases/tags/${RELEASE_TAG}" | \
RUN curl -s "https://api.github.com/repos/Pryaxis/TShock/releases/tags/${RELEASE_TAG}" | \ grep "browser_download_url" | \
grep "browser_download_url" | \ grep -o "https[^\"]\+" | \
grep -o "https[^\"]\+" | \ xargs curl -sLo tshock.zip && \
xargs curl -sLo tshock.zip && \ unzip -d tshock tshock.zip && \
unzip tshock.zip && \ rm tshock.zip
rm tshock.zip && \
# Is there a better way to do this?
mv TShock* tshock
FROM mono:latest FROM mono:6.12.0.107
WORKDIR /terraria WORKDIR /terraria
COPY --from=base /terraria/tshock /terraria COPY --from=base /terraria/tshock /terraria
# Create worlds directory & symlink it # Create worlds directory & symlink it
RUN mkdir -p worlds logs config /root/.local/share/Terraria && \ RUN mkdir -p worlds logs config /root/.local/share/Terraria && \
ln -s /terraria/worlds /root/.local/share/Terraria/Worlds ln -s /terraria/worlds /root/.local/share/Terraria/Worlds
ENTRYPOINT \ ENTRYPOINT \
mono /terraria/TerrariaServer.exe \ mono /terraria/TerrariaServer.exe \

View File

@ -1,23 +1,3 @@
<!---
Copyright (C) 2020 Jef Roosens
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
# Build arguments # Build arguments
The only required build argument is `RELEASE_TAG`. This is the GitHub tag of The only required build argument is `RELEASE_TAG`. This is the GitHub tag of
the release you wish to use. The releases can be found the release you wish to use. The releases can be found

View File

@ -1,37 +1,25 @@
# Copyright (C) 2020 Jef Roosens version: '2.4'
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
version: '3.5'
services: services:
tshock: app:
build: build:
context: . context: .
args: args:
- 'RELEASE_TAG=${RELEASE_TAG}' - 'RELEASE_TAG=${RELEASE_TAG}'
image: 'terraria-tshock:${RELEASE_TAG}' image: 'chewingbever/terraria-tshock:${RELEASE_TAG}'
restart: 'always'
restart: 'unless-stopped'
stdin_open: true stdin_open: true
tty: true tty: true
environment: environment:
- AUTOCREATE - 'AUTOCREATE'
ports: ports:
- '$PORT:7777' - '$PORT:7777'
volumes: volumes:
- '$CONFIG_DIR:/terraria/config' - '$CONFIG_DIR:/terraria/config'
- '$LOGS_DIR:/terraria/logs' - '$LOGS_DIR:/terraria/logs'
- '$WORLDS_DIR:/terraria/worlds' - '$WORLDS_DIR:/terraria/worlds'
volumes:
config:
logs:
worlds: