diff --git a/.github/workflows/dotnet.yaml b/.github/workflows/dotnet.yaml new file mode 100644 index 0000000..36220eb --- /dev/null +++ b/.github/workflows/dotnet.yaml @@ -0,0 +1,37 @@ +name: build dotnet +on: + workflow_dispatch: + schedule: + - cron: "0 0 * * 1" + push: + branches: + - master + paths: + - dotnet/** +jobs: + push: + name: "yolks:dotnet_${{ matrix.tag }}" + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + tag: + - 9 + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-buildx-action@v3 + with: + buildkitd-flags: --debug + - uses: docker/login-action@v3 + with: + registry: git.styandco.dev + username: ${{ github.repository_owner }} + password: ${{ secrets.REGISTRY_TOKEN }} + - uses: docker/build-push-action@v5 + with: + context: ./dotnet + file: ./dotnet/${{ matrix.tag }}/Dockerfile + platforms: linux/amd64 + push: true + tags: | + git.styandco.dev/lara-eggs/yolks:dotnet_${{ matrix.tag }} \ No newline at end of file diff --git a/.idea/indexLayout.xml b/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/projectSettingsUpdater.xml b/.idea/projectSettingsUpdater.xml new file mode 100644 index 0000000..64af657 --- /dev/null +++ b/.idea/projectSettingsUpdater.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/dotnet/9/Dockerfile b/dotnet/9/Dockerfile new file mode 100644 index 0000000..339cd0e --- /dev/null +++ b/dotnet/9/Dockerfile @@ -0,0 +1,26 @@ +FROM --platform=$TARGETOS/$TARGETARCH ghcr.io/parkervcp/yolks:debian + +LABEL authors="Torsten Widmann, Lara The Protogen" + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt update -y \ + && apt upgrade -y \ + && apt install -y apt-transport-https wget curl iproute2 libgdiplus tini \ + && pip install supervisor \ + && wget https://dot.net/v1/dotnet-install.sh \ + && D_V="$(curl -sSL https://dotnet.microsoft.com/en-us/download/dotnet/9.0 | grep -i '

SDK 9.*.*

' | head -1 | awk -F\" '{print $3}' | awk '{print $2;}' | sed 's/<\/h3>//g')" \ + && chmod +x dotnet-install.sh \ + && ./dotnet-install.sh -i /usr/share -v $D_V \ + && ln -s /usr/share/dotnet /usr/bin/dotnet + +USER container +ENV USER=container HOME=/home/container +WORKDIR /home/container + +STOPSIGNAL SIGINT + +COPY --chown=container:container ./../entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/usr/bin/tini", "-g", "--"] +CMD ["/entrypoint.sh"] \ No newline at end of file diff --git a/dotnet/entrypoint.sh b/dotnet/entrypoint.sh new file mode 100644 index 0000000..3601e72 --- /dev/null +++ b/dotnet/entrypoint.sh @@ -0,0 +1,20 @@ +#!/bin/bash +cd /home/container + +# Set environment variable that holds the Internal Docker IP +INTERNAL_IP=$(ip route get 1 | awk '{print $(NF-2);exit}') +export INTERNAL_IP + +# set this variable, dotnet needs it even without it it reports to `dotnet --info` it can not start any aplication without this +export DOTNET_ROOT=/usr/share/ + +# print the dotnet version on startup +printf "\033[1m\033[33mcontainer@pelican~ \033[0mdotnet --version\n" +dotnet --version + +# Replace Startup Variables +MODIFIED_STARTUP=$(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g') +echo -e ":/home/container$ ${MODIFIED_STARTUP}" + +# Run the Server +eval ${MODIFIED_STARTUP} \ No newline at end of file