diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index ecf6191..29ba252 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -3,7 +3,7 @@ name: SharePulse Build on: push: branches: - - main + - '**' jobs: build-jar: @@ -41,4 +41,42 @@ jobs: uses: actions/upload-artifact@v3 with: name: jar-artifact - path: build/libs/*.jar \ No newline at end of file + path: build/libs/*.jar + build-docker-image: + needs: build-jar + runs-on: ubuntu-22.04 + steps: + - name: Initialize Docker runtime + run: | + apt-get update + apt-get install ca-certificates curl gnupg lsb-release -y + install -m 0755 -d /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + chmod a+r /etc/apt/keyrings/docker.gpg + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ + $(lsb_release -cs) stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update + apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin -y + + - name: Checkout + uses: actions/checkout@v4 + + - name: Download Artifact + uses: actions/download-artifact@v3 + with: + name: jar-artifact + path: build/libs + + - name: Build Docker Image + run: docker build . -t walzen665/sharepulse:latest + + - name: Tag Docker image + run: docker tag walzen665/sharepulse:latest git.walzen665.de/walzen665/sharepulse:latest + + - name: Log in to Gitea Docker Registry + run: echo ${{ secrets.GITEAREGISTRYTOKEN }} | docker login -u ${{ secrets.GITEAREGISTRYUSERNAME }} --password-stdin https://git.walzen665.de + + - name: Push Docker Image to Gitea + run: docker push git.walzen665.de/walzen665/sharepulse:latest \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index d9ba0e6..2693ef9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ FROM openjdk:23-jdk-slim LABEL authors="Walzen665" -VOLUME /tmp -ARG JAR_FILE -COPY ${JAR_FILE} app.jar -ENTRYPOINT ["java","-jar","/app.jar"] \ No newline at end of file +WORKDIR /app +COPY build/libs/*.jar /app/sharepulse.jar +COPY docker-entrypoint.sh /app/docker-entrypoint.sh +EXPOSE 80 +RUN chmod +x /app/docker-entrypoint.sh +ENTRYPOINT ["/app/docker-entrypoint.sh"] \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..b95daaf --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Use environment variables or default values +RETHINKDB_HOST=${RETHINKDB_HOST:-localhost} +RETHINKDB_PORT=${RETHINKDB_PORT:-28015} +RETHINKDB_DATABASE=${RETHINKDB_DATABASE:-sharepulse} +SHAREPULSE_FILEPASSWORD_LENGTH=${SHAREPULSE_FILEPASSWORD_LENGTH:-6} +SHAREPULSE_FILEID_LENGTH=${SHAREPULSE_FILEID_LENGTH:-6} +SHAREPULSE_TEMP_FILESTORE_PATH=${SHAREPULSE_TEMP_FILESTORE_PATH:-/temp-filestore} +SHAREPULSE_AUTO_RESET_ON_STARTUP=${SHAREPULSE_AUTO_RESET_ON_STARTUP:-true} +MAX_FILE_SIZE=${MAX_FILE_SIZE:-1GB} +MAX_REQUEST_SIZE=${MAX_REQUEST_SIZE:-1GB} + +# Inject environment variables into application.properties or use SPRING_APPLICATION_JSON +export SPRING_APPLICATION_JSON=$(cat << EOF +{ + "rethinkdb.host": "$RETHINKDB_HOST", + "rethinkdb.port": $RETHINKDB_PORT, + "rethinkdb.database": "$RETHINKDB_DATABASE", + "sharepulse.filepassword.length": $SHAREPULSE_FILEPASSWORD_LENGTH, + "sharepulse.fileid.length": $SHAREPULSE_FILEID_LENGTH, + "sharepulse.temp-filestore-path": "$SHAREPULSE_TEMP_FILESTORE_PATH", + "sharepulse.auto-reset-on-startup": $SHAREPULSE_AUTO_RESET_ON_STARTUP, + "spring.servlet.multipart.max-file-size": "$MAX_FILE_SIZE", + "spring.servlet.multipart.max-request-size": "$MAX_REQUEST_SIZE" +} +EOF +) + +# Execute the jar file +exec java -jar sharepulse.jar \ No newline at end of file