From 90aca8e6cc31fec155eb960ca3d71c5d89466396 Mon Sep 17 00:00:00 2001 From: dakriy Date: Fri, 5 Feb 2021 17:04:21 -0700 Subject: [PATCH 1/3] Building and running with docker --- Dockerfile | 45 ++++++++++++++++++++++++++++++++++++++++++++ docker-entrypoint.sh | 35 ++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..f61889e6d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +FROM mono:latest as builder + +WORKDIR /build + +# Install build dependencies +RUN apt-get update \ + && apt-get install -yq wget \ + && wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \ + && dpkg -i packages-microsoft-prod.deb \ + && rm packages-microsoft-prod.deb \ + && apt-get install -yq apt-transport-https \ + && apt-get update \ + && apt-get install -yq dotnet-sdk-5.0 + +# Copy in source files +COPY . . + +# Compile project +RUN msbuild -m MCGalaxy.sln /property:Configuration=Release + +FROM mono:latest + +# Add user for application and create source directories +RUN groupadd -g 1000 galaxy && \ + useradd -u 1000 -ms /bin/bash -g galaxy galaxy + +ENV MCGALAXY /MCGalaxy +ENV DATA_DIR ${MCGALAXY}/data +WORKDIR ${MCGALAXY} + +COPY docker-entrypoint.sh / +COPY --from=builder --chown=galaxy:galaxy /build/bin/Release/ ./ + +RUN chmod +x /docker-entrypoint.sh \ + && mkdir -p ${DATA_DIR} \ + && chown -R galaxy:galaxy ${DATA_DIR} \ + && chown -R galaxy:galaxy ${MCGALAXY} + +USER galaxy + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["mono", "--gc=sgen", "MCGalaxyCLI.exe" ] + +EXPOSE 25565 +VOLUME ${DATA_DIR} diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 000000000..145558584 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env sh + +set -e + +mkdir -p ${DATA_DIR} +cd ${DATA_DIR} +touch MCGalaxy.db +mkdir -p blockdb \ + blockdefs \ + backups \ + bots \ + extra \ + levels \ + logs \ + players \ + properties \ + ranks \ + ranksbackup \ + text +cd ${MCGALAXY} +ln -sf ${DATA_DIR}/blockdb blockdb +ln -sf ${DATA_DIR}/blockdefs blockdefs +ln -sf ${DATA_DIR}/backups backups +ln -sf ${DATA_DIR}/bots bots +ln -sf ${DATA_DIR}/extra extra +ln -sf ${DATA_DIR}/levels levels +ln -sf ${DATA_DIR}/logs logs +ln -sf ${DATA_DIR}/players players +ln -sf ${DATA_DIR}/properties properties +ln -sf ${DATA_DIR}/ranks ranks +ln -sf ${DATA_DIR}/ranksbackup ranksbackup +ln -sf ${DATA_DIR}/text text +ln -sf ${DATA_DIR}/MCGalaxy.db MCGalaxy.db + +exec "$@" From f33c4dd539907c7cc215fb0f9ac93d4e01b92048 Mon Sep 17 00:00:00 2001 From: dakriy Date: Sat, 6 Feb 2021 00:30:37 -0700 Subject: [PATCH 2/3] add block props as a default persistent directory --- docker-entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 145558584..8d7dbd88d 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -7,6 +7,7 @@ cd ${DATA_DIR} touch MCGalaxy.db mkdir -p blockdb \ blockdefs \ + blockprops \ backups \ bots \ extra \ @@ -20,6 +21,7 @@ mkdir -p blockdb \ cd ${MCGALAXY} ln -sf ${DATA_DIR}/blockdb blockdb ln -sf ${DATA_DIR}/blockdefs blockdefs +ln -sf ${DATA_DIR}/blockprops blockprops ln -sf ${DATA_DIR}/backups backups ln -sf ${DATA_DIR}/bots bots ln -sf ${DATA_DIR}/extra extra From 3309068e9fa5a2a260ce08d4edcbdec2aff008fb Mon Sep 17 00:00:00 2001 From: dakriy Date: Tue, 16 Mar 2021 00:57:29 -0700 Subject: [PATCH 3/3] Don't need to install dotnet-sdk --- Dockerfile | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index f61889e6d..21ddba878 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,16 +2,6 @@ FROM mono:latest as builder WORKDIR /build -# Install build dependencies -RUN apt-get update \ - && apt-get install -yq wget \ - && wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \ - && dpkg -i packages-microsoft-prod.deb \ - && rm packages-microsoft-prod.deb \ - && apt-get install -yq apt-transport-https \ - && apt-get update \ - && apt-get install -yq dotnet-sdk-5.0 - # Copy in source files COPY . .