diff --git a/.github/workflows/push-docker-image.yml b/.github/workflows/push-docker-image.yml new file mode 100644 index 0000000..9066a9b --- /dev/null +++ b/.github/workflows/push-docker-image.yml @@ -0,0 +1,85 @@ +name: Push Docker Image + +on: + workflow_call: + inputs: + version: + description: The version of Red5 Server to be pushed + type: string + required: true + secrets: + dockerhub-password: + description: Docker Hub password + required: true + dockerhub-username: + description: Docker Hub username + required: true + dockerhub-repository: + description: Docker Hub repository (e.g., username/repository) + required: true + +jobs: + substring-version: + if: github.repository == 'Red5/red5-server' + runs-on: ubuntu-latest + outputs: + version: ${{ steps.substring.outputs.substring }} + steps: + - name: Substring version + id: substring + uses: bhowell2/github-substring-action@1.0.2 + with: + value: ${{ inputs.version }} + index_of_str: v + + retrieve-version-parts: + if: github.repository == 'Red5/red5-server' + runs-on: ubuntu-latest + needs: substring-version + outputs: + major-version: ${{ steps.split.outputs._0 }} + minor-version: ${{ steps.split.outputs._1 }} + patch-version: ${{ steps.split.outputs._2 }} + steps: + - name: Retrieve version parts + id: split + uses: winterjung/split@v2 + with: + msg: ${{ needs.substring-version.outputs.version }} + separator: . + + push-docker-image: + if: github.repository == 'Red5/red5-server' + runs-on: ubuntu-latest + needs: retrieve-version-parts + steps: + - uses: actions/checkout@v6 + with: + repository: 'Red5/docker' + path: docker-repo + token: ${{ secrets.GITHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v4 + - name: Login to GitHub Container Registry + uses: docker/login-action@v4 + with: + password: ${{ secrets.dockerhub-password }} + username: ${{ secrets.dockerhub-username }} + - name: Build and push Docker image + uses: docker/build-push-action@v7 + env: + RED5_VERSION: ${{ needs.retrieve-version-parts.outputs.major-version }}.${{needs.retrieve-version-parts.outputs.minor-version}}.${{ needs.retrieve-version-parts.outputs.patch-version }} + with: + build-args: | + RED5_VERSION=${{ env.RED5_VERSION }} + context: . + file: ./docker-repo/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ${{ secrets.dockerhub-repository }}:${{ env.RED5_VERSION }} + ${{ secrets.dockerhub-repository }}:${{ needs.retrieve-version-parts.outputs.major-version }} + ${{ secrets.dockerhub-repository }}:${{ needs.retrieve-version-parts.outputs.major-version }}.${{ needs.retrieve-version-parts.outputs.minor-version }} + ${{ secrets.dockerhub-repository }}:latest diff --git a/Dockerfile b/Dockerfile deleted file mode 120000 index b03fc89..0000000 --- a/Dockerfile +++ /dev/null @@ -1 +0,0 @@ -red5-2.0.30-jdk21/Dockerfile \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6d62899 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +# +# Red5 + JDK 21 Dockerfile +# +# https://github.com/Red5/docker +# https://hub.docker.com/_/eclipse-temurin +# +FROM eclipse-temurin:21-jdk +LABEL org.opencontainers.image.authors="Paul Gregoire " + +# Define as an ARG with a default value +ARG RED5_VERSION=2.0.34 + +ENV DEBIAN_FRONTEND=noninteractive +# Assign ARG value to ENV +ENV RED5_VERSION=${RED5_VERSION} + +# Define RED5_HOME variable +ENV RED5_HOME=/opt/red5 + +RUN mkdir -p $RED5_HOME && \ + apt-get update && \ + apt-get install -y --no-install-recommends wget ca-certificates && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ + wget -q https://github.com/Red5/red5-server/releases/download/v${RED5_VERSION}/red5-server-${RED5_VERSION}.tar.gz -O red5.tar.gz && \ + tar -xzf red5.tar.gz -C ${RED5_HOME} --strip-components=1 && \ + rm -rf red5.tar.gz + +# https://docs.docker.com/userguide/dockervolumes/ +VOLUME [ $RED5_HOME ] + +WORKDIR /opt/red5 + +EXPOSE 843 1935 5080 5443 8081 8443 + +ENTRYPOINT ["./red5.sh"] diff --git a/red5-2.0.30-jdk21/Dockerfile b/red5-2.0.30-jdk21/Dockerfile deleted file mode 100644 index 5e741ac..0000000 --- a/red5-2.0.30-jdk21/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -# -# Red5 + JDK 21 Dockerfile -# -# https://github.com/Red5/docker -# https://hub.docker.com/_/eclipse-temurin -# -FROM eclipse-temurin:21-jdk -LABEL org.opencontainers.image.authors="Paul Gregoire " - -ENV DEBIAN_FRONTEND=noninteractive -ENV RED5_VERSION=2.0.30 - -# Define RED5_HOME variable -ENV RED5_HOME=/opt/red5 - -RUN mkdir -p $RED5_HOME - -RUN apt-get update && \ - apt-get install -y --no-install-recommends wget ca-certificates && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ - wget -q https://github.com/Red5/red5-server/releases/download/v${RED5_VERSION}/red5-server-${RED5_VERSION}.tar.gz -O red5.tar.gz && \ - tar -xzf red5.tar.gz -C ${RED5_HOME} --strip-components=1 && \ - rm -rf red5.tar.gz - -# https://docs.docker.com/userguide/dockervolumes/ -VOLUME [ $RED5_HOME ] - -WORKDIR /opt/red5 - -EXPOSE 843 1935 5080 5443 8081 8443 - -ENTRYPOINT ["./red5.sh"] diff --git a/red5-2.0.34-jdk21/Dockerfile b/red5-2.0.34-jdk21/Dockerfile deleted file mode 100644 index 81fa0c9..0000000 --- a/red5-2.0.34-jdk21/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -# -# Red5 + JDK 21 Dockerfile -# -# https://github.com/Red5/docker -# https://hub.docker.com/_/eclipse-temurin -# -FROM eclipse-temurin:21-jdk -LABEL org.opencontainers.image.authors="Paul Gregoire " - -ENV DEBIAN_FRONTEND=noninteractive -ENV RED5_VERSION=2.0.34 - -# Define RED5_HOME variable -ENV RED5_HOME=/opt/red5 - -RUN mkdir -p $RED5_HOME - -RUN apt-get update && \ - apt-get install -y --no-install-recommends wget ca-certificates && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ - wget -q https://github.com/Red5/red5-server/releases/download/v${RED5_VERSION}/red5-server-${RED5_VERSION}.tar.gz -O red5.tar.gz && \ - tar -xzf red5.tar.gz -C ${RED5_HOME} --strip-components=1 && \ - rm -rf red5.tar.gz - -# https://docs.docker.com/userguide/dockervolumes/ -VOLUME [ $RED5_HOME ] - -WORKDIR /opt/red5 - -EXPOSE 843 1935 5080 5443 8081 8443 - -ENTRYPOINT ["./red5.sh"]