From f960864abd2f4940862a61e8b9d7934263cda551 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Wed, 26 Oct 2022 22:51:11 +0100 Subject: [PATCH] add multiple ubuntu images --- .github/workflows/docker-publish.yml | 65 ++++++++++++++++- Dockerfile.ubuntu-1804 | 104 +++++++++++++++++++++++++++ Dockerfile.ubuntu-2004 | 104 +++++++++++++++++++++++++++ Dockerfile => Dockerfile.ubuntu-2204 | 0 README.md | 11 +++ 5 files changed, 283 insertions(+), 1 deletion(-) create mode 100644 Dockerfile.ubuntu-1804 create mode 100644 Dockerfile.ubuntu-2004 rename Dockerfile => Dockerfile.ubuntu-2204 (100%) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index f4a6999..13deaff 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -7,7 +7,7 @@ on: - cron: "0 23 * * *" jobs: - docker: + ubuntu-2204: runs-on: ubuntu-latest steps: - name: Checkout @@ -31,6 +31,7 @@ jobs: uses: docker/build-push-action@v3.2.0 with: context: . + file: ./Dockerfile.ubuntu-2204 platforms: linux/amd64 push: true tags: | @@ -38,3 +39,65 @@ jobs: gameservermanagers/linuxgsm:ubuntu-22.04 ghcr.io/gameservermanagers/linuxgsm:latest ghcr.io/gameservermanagers/linuxgsm:ubuntu-22.04 + + ubuntu-2004: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2.2.1 + - name: Login to DockerHub + uses: docker/login-action@v2.1.0 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - name: Login to GitHub Container Registry + uses: docker/login-action@v2.1.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push (Ubuntu 20.04) + uses: docker/build-push-action@v3.2.0 + with: + context: . + file: ./Dockerfile.ubuntu-2004 + platforms: linux/amd64 + push: true + tags: | + gameservermanagers/linuxgsm:ubuntu-20.04 + ghcr.io/gameservermanagers/linuxgsm:ubuntu-20.04 + + ubuntu-1804: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2.2.1 + - name: Login to DockerHub + uses: docker/login-action@v2.1.0 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + - name: Login to GitHub Container Registry + uses: docker/login-action@v2.1.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push (Ubuntu 18.04) + uses: docker/build-push-action@v3.2.0 + with: + context: . + file: ./Dockerfile.ubuntu-1804 + platforms: linux/amd64 + push: true + tags: | + gameservermanagers/linuxgsm:ubuntu-18.04 + ghcr.io/gameservermanagers/linuxgsm:ubuntu-18.04 diff --git a/Dockerfile.ubuntu-1804 b/Dockerfile.ubuntu-1804 new file mode 100644 index 0000000..deaeee0 --- /dev/null +++ b/Dockerfile.ubuntu-1804 @@ -0,0 +1,104 @@ +# +# LinuxGSM Base Dockerfile +# +# https://github.com/GameServerManagers/docker-linuxgsm +# + +FROM gameservermanagers/steamcmd:ubuntu-18.04 + +LABEL maintainer="LinuxGSM " + +ENV DEBIAN_FRONTEND noninteractive +ENV TERM=xterm +ENV LGSM_GITHUBUSER=GameServerManagers +ENV LGSM_GITHUBREPO=LinuxGSM +ENV LGSM_GITHUBBRANCH=develop +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +## Install Base LinuxGSM Requirements +RUN echo "**** Install Base LinuxGSM Requirements ****" \ + && apt-get update \ + && apt-get install -y software-properties-common \ + && add-apt-repository multiverse \ + && apt-get update \ + && apt-get install -y \ + cron \ + bc \ + binutils \ + bsdmainutils \ + bzip2 \ + ca-certificates \ + cpio \ + curl \ + distro-info \ + file \ + git \ + gzip \ + hostname \ + jq \ + lib32gcc-s1 \ + lib32stdc++6 \ + netcat \ + python3 \ + sudo \ + tar \ + tini \ + tmux \ + unzip \ + util-linux \ + wget \ + xz-utils \ + # Docker Extras + iproute2 \ + iputils-ping \ + nano \ + vim \ + && apt-get -y autoremove \ + && apt-get -y clean \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /tmp/* \ + && rm -rf /var/tmp/* + +# Install Node.js +RUN echo "**** Install Node.js ****" \ + && curl -sL https://deb.nodesource.com/setup_16.x | bash - \ + && apt-get update \ + && apt-get install -y nodejs \ + && apt-get -y autoremove \ + && apt-get -y clean \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /tmp/* \ + && rm -rf /var/tmp/* + +# Install GameDig https://docs.linuxgsm.com/requirements/gamedig +RUN echo "**** Install GameDig ****" \ + && npm install -g gamedig + +WORKDIR /linuxgsm + +## Download linuxgsm.sh +RUN echo "**** Download linuxgsm.sh ****" \ + && set -ex \ + && mkdir -p /linuxgsm/lgsm \ + && wget -O linuxgsm.sh "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${LGSM_GITHUBBRANCH}/linuxgsm.sh" \ + && chmod +x linuxgsm.sh + +RUN echo "**** Get LinuxGSM Modules ****" \ + && git clone --filter=blob:none --no-checkout --sparse https://github.com/GameServerManagers/LinuxGSM.git \ + && cd LinuxGSM \ + && git sparse-checkout set --cone \ + && git sparse-checkout set lgsm/functions \ + && git checkout ${LGSM_GITHUBBRANCH} \ + && mkdir -p /linuxgsm/lgsm/functions \ + && mv lgsm/functions/* /linuxgsm/lgsm/functions \ + && chmod +x /linuxgsm/lgsm/functions/* \ + && rm -rf /linuxgsm/LinuxGSM + +# Add LinuxGSM cronjobs +RUN echo "**** Create Cronjobs ****" +RUN (crontab -l 2>/dev/null; echo "*/1 * * * * /linuxgsm/*server monitor > /dev/null 2>&1") | crontab - +RUN (crontab -l 2>/dev/null; echo "*/30 * * * * /linuxgsm/*server update > /dev/null 2>&1") | crontab - + +RUN rm -f /linuxgsm/entrypoint.sh +COPY entrypoint.sh /linuxgsm/entrypoint.sh +RUN date > /time.txt diff --git a/Dockerfile.ubuntu-2004 b/Dockerfile.ubuntu-2004 new file mode 100644 index 0000000..8da200b --- /dev/null +++ b/Dockerfile.ubuntu-2004 @@ -0,0 +1,104 @@ +# +# LinuxGSM Base Dockerfile +# +# https://github.com/GameServerManagers/docker-linuxgsm +# + +FROM gameservermanagers/steamcmd:ubuntu-20.04 + +LABEL maintainer="LinuxGSM " + +ENV DEBIAN_FRONTEND noninteractive +ENV TERM=xterm +ENV LGSM_GITHUBUSER=GameServerManagers +ENV LGSM_GITHUBREPO=LinuxGSM +ENV LGSM_GITHUBBRANCH=develop +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +## Install Base LinuxGSM Requirements +RUN echo "**** Install Base LinuxGSM Requirements ****" \ + && apt-get update \ + && apt-get install -y software-properties-common \ + && add-apt-repository multiverse \ + && apt-get update \ + && apt-get install -y \ + cron \ + bc \ + binutils \ + bsdmainutils \ + bzip2 \ + ca-certificates \ + cpio \ + curl \ + distro-info \ + file \ + git \ + gzip \ + hostname \ + jq \ + lib32gcc-s1 \ + lib32stdc++6 \ + netcat \ + python3 \ + sudo \ + tar \ + tini \ + tmux \ + unzip \ + util-linux \ + wget \ + xz-utils \ + # Docker Extras + iproute2 \ + iputils-ping \ + nano \ + vim \ + && apt-get -y autoremove \ + && apt-get -y clean \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /tmp/* \ + && rm -rf /var/tmp/* + +# Install Node.js +RUN echo "**** Install Node.js ****" \ + && curl -sL https://deb.nodesource.com/setup_16.x | bash - \ + && apt-get update \ + && apt-get install -y nodejs \ + && apt-get -y autoremove \ + && apt-get -y clean \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /tmp/* \ + && rm -rf /var/tmp/* + +# Install GameDig https://docs.linuxgsm.com/requirements/gamedig +RUN echo "**** Install GameDig ****" \ + && npm install -g gamedig + +WORKDIR /linuxgsm + +## Download linuxgsm.sh +RUN echo "**** Download linuxgsm.sh ****" \ + && set -ex \ + && mkdir -p /linuxgsm/lgsm \ + && wget -O linuxgsm.sh "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${LGSM_GITHUBBRANCH}/linuxgsm.sh" \ + && chmod +x linuxgsm.sh + +RUN echo "**** Get LinuxGSM Modules ****" \ + && git clone --filter=blob:none --no-checkout --sparse https://github.com/GameServerManagers/LinuxGSM.git \ + && cd LinuxGSM \ + && git sparse-checkout set --cone \ + && git sparse-checkout set lgsm/functions \ + && git checkout ${LGSM_GITHUBBRANCH} \ + && mkdir -p /linuxgsm/lgsm/functions \ + && mv lgsm/functions/* /linuxgsm/lgsm/functions \ + && chmod +x /linuxgsm/lgsm/functions/* \ + && rm -rf /linuxgsm/LinuxGSM + +# Add LinuxGSM cronjobs +RUN echo "**** Create Cronjobs ****" +RUN (crontab -l 2>/dev/null; echo "*/1 * * * * /linuxgsm/*server monitor > /dev/null 2>&1") | crontab - +RUN (crontab -l 2>/dev/null; echo "*/30 * * * * /linuxgsm/*server update > /dev/null 2>&1") | crontab - + +RUN rm -f /linuxgsm/entrypoint.sh +COPY entrypoint.sh /linuxgsm/entrypoint.sh +RUN date > /time.txt diff --git a/Dockerfile b/Dockerfile.ubuntu-2204 similarity index 100% rename from Dockerfile rename to Dockerfile.ubuntu-2204 diff --git a/README.md b/README.md index b6387f5..2dda36f 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,14 @@ Codacy grade SteamCMD MIT License

+ +## About + +LinuxGSM is a command-line tool for quick, simple deployment and management of Linux dedicated game servers. This container image builds daily and is available on [Docker Hub](https://hub.docker.com/r/gameservermanagers/linuxgsm) as well as [GitHub Container Registry](https://github.com/GameServerManagers/docker-linuxgsm/pkgs/container/linuxgsm). + +## Tags + +- `latest`, `ubuntu` - Latest Ubuntu LTS release +- `ubuntu-22.04` - Ubuntu 22.04 LTS 'Jammy Jackalope' +- `ubuntu-20.04` - Ubuntu 20.04 LTS 'Focal Fossa' +- `ubuntu-18.04` - Ubuntu 18.04 LTS 'Bionic Beaver'