From 9c291892cd7dafdd1a785f3a25dad663643e4ee6 Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Mon, 10 Jan 2022 00:50:05 +0200 Subject: [PATCH 1/6] Bump to .NET 6. Add arm64 image build. Use short commit hash on image tag. --- .github/workflows/build-image.yml | 18 +++++++++++++----- Core/Core.csproj | 14 +++++++------- docker/Dockerfile.amd64 | 4 ++-- .../{Dockerfile.aarch64 => Dockerfile.arm64} | 4 ++-- modules/ChatManagement/ChatManagement.csproj | 2 +- modules/CombotAntiSpam/CombotAntiSpam.csproj | 2 +- .../Destiny2.WhereIsXur.csproj | 6 +++--- modules/Entertainment/Entertainment.csproj | 2 +- modules/RichSiteSummary/RichSiteSummary.csproj | 4 ++-- modules/UrlLimitations/UrlLimitations.csproj | 2 +- modules/UserGroupTag/UserGroupTag.csproj | 2 +- tests/Tests.csproj | 8 ++++---- 12 files changed, 38 insertions(+), 30 deletions(-) rename docker/{Dockerfile.aarch64 => Dockerfile.arm64} (92%) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 57cf1b0..54ab8c1 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -2,13 +2,15 @@ on: push: - branches: - - 'dev' jobs: docker: name: Build Docker image + strategy: + matrix: + arch: ['amd64', 'arm64'] + runs-on: ubuntu-latest steps: - @@ -27,11 +29,17 @@ jobs: registry: ${{ secrets.REGISTRY_URL }} username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} + - + name: Get short commit SHA + id: commit_sha + run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - name: Build and push uses: docker/build-push-action@v2 with: context: . - file: docker/Dockerfile.amd64 - push: true - tags: ${{ secrets.REGISTRY_URL }}/west/telegram-bot:latest,${{ secrets.REGISTRY_URL }}/west/telegram-bot:${{ github.sha }} \ No newline at end of file + file: docker/Dockerfile.${{ matrix.arch }} + platforms: linux/${{ matrix.arch }} + push: ${{ github.ref == 'refs/heads/dev' }} + tags: ${{ secrets.REGISTRY_URL }}/west/telegram-bot:latest, + |${{ secrets.REGISTRY_URL }}/west/telegram-bot:${{ steps.commit_sha.outputs.sha_short }} \ No newline at end of file diff --git a/Core/Core.csproj b/Core/Core.csproj index 11d7178..bb41840 100644 --- a/Core/Core.csproj +++ b/Core/Core.csproj @@ -1,22 +1,22 @@ - net5.0 + net6.0 TelegramBot Kruzya.TelegramBot.Core - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + diff --git a/docker/Dockerfile.amd64 b/docker/Dockerfile.amd64 index a0f24e4..d8ae3d8 100644 --- a/docker/Dockerfile.amd64 +++ b/docker/Dockerfile.amd64 @@ -1,5 +1,5 @@ # Build a project -FROM mcr.microsoft.com/dotnet/sdk:5.0.404-alpine3.14-amd64 AS build +FROM mcr.microsoft.com/dotnet/sdk:6.0.1-alpine3.14-amd64 AS build WORKDIR /source # Copy project and perform restoring @@ -23,7 +23,7 @@ RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb # Now reuse image with only runtime -FROM mcr.microsoft.com/dotnet/aspnet:5.0.13-alpine3.14-amd64 +FROM mcr.microsoft.com/dotnet/aspnet:6.0.1-alpine3.14-amd64 WORKDIR /user COPY --from=build /app /app diff --git a/docker/Dockerfile.aarch64 b/docker/Dockerfile.arm64 similarity index 92% rename from docker/Dockerfile.aarch64 rename to docker/Dockerfile.arm64 index fad6347..5499b48 100644 --- a/docker/Dockerfile.aarch64 +++ b/docker/Dockerfile.arm64 @@ -1,5 +1,5 @@ # Build a project -FROM mcr.microsoft.com/dotnet/sdk:5.0.404-buster-slim-arm64v8 AS build +FROM mcr.microsoft.com/dotnet/sdk:6.0.1-alpine3.14-arm64v8 AS build WORKDIR /source # Copy project and perform restoring @@ -23,7 +23,7 @@ RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb # Now reuse image with only runtime -FROM mcr.microsoft.com/dotnet/aspnet:5.0.13-alpine3.14-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:6.0.1-alpine3.14-arm64v8 WORKDIR /user COPY --from=build /app /app diff --git a/modules/ChatManagement/ChatManagement.csproj b/modules/ChatManagement/ChatManagement.csproj index dc8f81f..ff72078 100644 --- a/modules/ChatManagement/ChatManagement.csproj +++ b/modules/ChatManagement/ChatManagement.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 TelegramBot.ChatManagement West.TelegramBot.ChatManagement diff --git a/modules/CombotAntiSpam/CombotAntiSpam.csproj b/modules/CombotAntiSpam/CombotAntiSpam.csproj index ada4e7e..e2f3e82 100644 --- a/modules/CombotAntiSpam/CombotAntiSpam.csproj +++ b/modules/CombotAntiSpam/CombotAntiSpam.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 TelegramBot.CombotAntiSpam Kruzya.TelegramBot.CombotAntiSpam diff --git a/modules/Destiny2.WhereIsXur/Destiny2.WhereIsXur.csproj b/modules/Destiny2.WhereIsXur/Destiny2.WhereIsXur.csproj index eb91cf1..1e8fa06 100644 --- a/modules/Destiny2.WhereIsXur/Destiny2.WhereIsXur.csproj +++ b/modules/Destiny2.WhereIsXur/Destiny2.WhereIsXur.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 TelegramBot.D2_WhereIsXur Kruzya.TelegramBot.Destiny2.WhereIsXur @@ -11,8 +11,8 @@ - - + + diff --git a/modules/Entertainment/Entertainment.csproj b/modules/Entertainment/Entertainment.csproj index 609decc..5a62490 100644 --- a/modules/Entertainment/Entertainment.csproj +++ b/modules/Entertainment/Entertainment.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 TelegramBot.Entertainment West.Entertainment diff --git a/modules/RichSiteSummary/RichSiteSummary.csproj b/modules/RichSiteSummary/RichSiteSummary.csproj index c82745b..7341b84 100644 --- a/modules/RichSiteSummary/RichSiteSummary.csproj +++ b/modules/RichSiteSummary/RichSiteSummary.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 TelegramBot.RichSiteSummary Kruzya.TelegramBot.RichSiteSummary @@ -11,7 +11,7 @@ - + diff --git a/modules/UrlLimitations/UrlLimitations.csproj b/modules/UrlLimitations/UrlLimitations.csproj index 2a7e32e..09c082d 100644 --- a/modules/UrlLimitations/UrlLimitations.csproj +++ b/modules/UrlLimitations/UrlLimitations.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 TelegramBot.UrlLimitations Kruzya.TelegramBot.UrlLimitations diff --git a/modules/UserGroupTag/UserGroupTag.csproj b/modules/UserGroupTag/UserGroupTag.csproj index 686ce30..2c5932d 100644 --- a/modules/UserGroupTag/UserGroupTag.csproj +++ b/modules/UserGroupTag/UserGroupTag.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 TelegramBot.UserGroupTag diff --git a/tests/Tests.csproj b/tests/Tests.csproj index 5e99fe4..d25df7c 100644 --- a/tests/Tests.csproj +++ b/tests/Tests.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 false @@ -11,9 +11,9 @@ - - - + + + From 938a9188150bc7741d8699710ef04566045baade Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Mon, 10 Jan 2022 00:51:08 +0200 Subject: [PATCH 2/6] [ci] fix workflow --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 54ab8c1..b38c8e6 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -42,4 +42,4 @@ jobs: platforms: linux/${{ matrix.arch }} push: ${{ github.ref == 'refs/heads/dev' }} tags: ${{ secrets.REGISTRY_URL }}/west/telegram-bot:latest, - |${{ secrets.REGISTRY_URL }}/west/telegram-bot:${{ steps.commit_sha.outputs.sha_short }} \ No newline at end of file + ${{ secrets.REGISTRY_URL }}/west/telegram-bot:${{ steps.commit_sha.outputs.sha_short }} \ No newline at end of file From ceb9825f29b262ba29d68948f5e6a3294ac8c7f6 Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Mon, 10 Jan 2022 01:01:38 +0200 Subject: [PATCH 3/6] [ci] Multiarch build. Fix dockerfile. --- .github/workflows/build-image.yml | 8 ++---- docker/Dockerfile | 44 +++++++++++++++++++++++++++++++ docker/Dockerfile.amd64 | 4 +-- docker/Dockerfile.arm64 | 4 +-- 4 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 docker/Dockerfile diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index b38c8e6..3e48a06 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -6,11 +6,7 @@ on: jobs: docker: name: Build Docker image - - strategy: - matrix: - arch: ['amd64', 'arm64'] - + runs-on: ubuntu-latest steps: - @@ -39,7 +35,7 @@ jobs: with: context: . file: docker/Dockerfile.${{ matrix.arch }} - platforms: linux/${{ matrix.arch }} + platforms: linux/amd64,linux/arm64 push: ${{ github.ref == 'refs/heads/dev' }} tags: ${{ secrets.REGISTRY_URL }}/west/telegram-bot:latest, ${{ secrets.REGISTRY_URL }}/west/telegram-bot:${{ steps.commit_sha.outputs.sha_short }} \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..2e7b9a7 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,44 @@ +# Build a project +FROM mcr.microsoft.com/dotnet/sdk:6.0.101-alpine3.14 AS build +WORKDIR /source + +# Copy project and perform restoring +COPY Kruzya.TelegramBot.sln ./ +COPY ./Core/*.csproj ./Core/ +COPY ./tests/*.csproj ./tests/ +COPY ./modules/CombotAntiSpam/*.csproj ./modules/CombotAntiSpam/ +COPY ./modules/Destiny2.WhereIsXur/*.csproj ./modules/Destiny2.WhereIsXur/ +COPY ./modules/RichSiteSummary/*.csproj ./modules/RichSiteSummary/ +COPY ./modules/UrlLimitations/*.csproj ./modules/UrlLimitations/ +COPY ./modules/ChatManagement/*.csproj ./modules/ChatManagement/ +COPY ./modules/Entertainment/*.csproj ./modules/Entertainment/ +COPY ./modules/UserGroupTag/*.csproj ./modules/UserGroupTag/ +RUN dotnet restore Kruzya.TelegramBot.sln + +# Copy all project files +COPY . . +RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ + mkdir /app/modules && \ + cp /app/TelegramBot.*.dll /app/modules/ && \ + rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb + +# Now reuse image with only runtime +FROM mcr.microsoft.com/dotnet/aspnet:6.0.101-alpine3.14 +WORKDIR /user +COPY --from=build /app /app + +ENV MUSL_LOCPATH /usr/share/i18n/locales/musl +ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false + +RUN apk add --no-cache cmake make musl-dev gcc gettext-dev libintl icu-libs \ + && wget https://gitlab.com/rilian-la-te/musl-locales/-/archive/master/musl-locales-master.zip \ + && unzip musl-locales-master.zip \ + && cd musl-locales-master \ + && cmake -DLOCALE_PROFILE=OFF -D CMAKE_INSTALL_PREFIX:PATH=/usr . && make && make install \ + && cd .. && rm -r musl-locales-master + +ENV LANG ru_RU.UTF-8 +ENV LANGUAGE ru_RU.UTF-8 +ENV LC_ALL ru_RU.UTF-8 + +ENTRYPOINT ["dotnet", "/app/TelegramBot.dll"] diff --git a/docker/Dockerfile.amd64 b/docker/Dockerfile.amd64 index d8ae3d8..58aea98 100644 --- a/docker/Dockerfile.amd64 +++ b/docker/Dockerfile.amd64 @@ -1,5 +1,5 @@ # Build a project -FROM mcr.microsoft.com/dotnet/sdk:6.0.1-alpine3.14-amd64 AS build +FROM mcr.microsoft.com/dotnet/sdk:6.0.101-alpine3.14-amd64 AS build WORKDIR /source # Copy project and perform restoring @@ -23,7 +23,7 @@ RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb # Now reuse image with only runtime -FROM mcr.microsoft.com/dotnet/aspnet:6.0.1-alpine3.14-amd64 +FROM mcr.microsoft.com/dotnet/aspnet:6.0.101-alpine3.14-amd64 WORKDIR /user COPY --from=build /app /app diff --git a/docker/Dockerfile.arm64 b/docker/Dockerfile.arm64 index 5499b48..25c42fe 100644 --- a/docker/Dockerfile.arm64 +++ b/docker/Dockerfile.arm64 @@ -1,5 +1,5 @@ # Build a project -FROM mcr.microsoft.com/dotnet/sdk:6.0.1-alpine3.14-arm64v8 AS build +FROM mcr.microsoft.com/dotnet/sdk:6.0.101-alpine3.14-arm64v8 AS build WORKDIR /source # Copy project and perform restoring @@ -23,7 +23,7 @@ RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb # Now reuse image with only runtime -FROM mcr.microsoft.com/dotnet/aspnet:6.0.1-alpine3.14-arm64v8 +FROM mcr.microsoft.com/dotnet/aspnet:6.0.101-alpine3.14-arm64v8 WORKDIR /user COPY --from=build /app /app From 3dbd5e261f82ced2744214f6dabbf0062e1ce54a Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Mon, 10 Jan 2022 01:02:43 +0200 Subject: [PATCH 4/6] [ci] fix Dockerfile name in worklflow --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 3e48a06..fccd3ba 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -34,7 +34,7 @@ jobs: uses: docker/build-push-action@v2 with: context: . - file: docker/Dockerfile.${{ matrix.arch }} + file: docker/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.ref == 'refs/heads/dev' }} tags: ${{ secrets.REGISTRY_URL }}/west/telegram-bot:latest, From dbd4b73a324c7a62e9dd9d0a3b2de67184dd8b4b Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Mon, 10 Jan 2022 01:05:02 +0200 Subject: [PATCH 5/6] [ci] fix runtime image name --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 2e7b9a7..7877b99 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -23,7 +23,7 @@ RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb # Now reuse image with only runtime -FROM mcr.microsoft.com/dotnet/aspnet:6.0.101-alpine3.14 +FROM mcr.microsoft.com/dotnet/aspnet:6.0.1-alpine3.14 WORKDIR /user COPY --from=build /app /app From a9deb529538cfea7b1c3fa252603c309596a7835 Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Mon, 10 Jan 2022 01:16:46 +0200 Subject: [PATCH 6/6] Remove separate Dockerfiles. --- .github/workflows/build-image.yml | 2 -- docker/Dockerfile => Dockerfile | 0 docker/Dockerfile.amd64 | 44 ------------------------------- docker/Dockerfile.arm64 | 44 ------------------------------- 4 files changed, 90 deletions(-) rename docker/Dockerfile => Dockerfile (100%) delete mode 100644 docker/Dockerfile.amd64 delete mode 100644 docker/Dockerfile.arm64 diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index fccd3ba..c66de99 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -33,8 +33,6 @@ jobs: name: Build and push uses: docker/build-push-action@v2 with: - context: . - file: docker/Dockerfile platforms: linux/amd64,linux/arm64 push: ${{ github.ref == 'refs/heads/dev' }} tags: ${{ secrets.REGISTRY_URL }}/west/telegram-bot:latest, diff --git a/docker/Dockerfile b/Dockerfile similarity index 100% rename from docker/Dockerfile rename to Dockerfile diff --git a/docker/Dockerfile.amd64 b/docker/Dockerfile.amd64 deleted file mode 100644 index 58aea98..0000000 --- a/docker/Dockerfile.amd64 +++ /dev/null @@ -1,44 +0,0 @@ -# Build a project -FROM mcr.microsoft.com/dotnet/sdk:6.0.101-alpine3.14-amd64 AS build -WORKDIR /source - -# Copy project and perform restoring -COPY Kruzya.TelegramBot.sln ./ -COPY ./Core/*.csproj ./Core/ -COPY ./tests/*.csproj ./tests/ -COPY ./modules/CombotAntiSpam/*.csproj ./modules/CombotAntiSpam/ -COPY ./modules/Destiny2.WhereIsXur/*.csproj ./modules/Destiny2.WhereIsXur/ -COPY ./modules/RichSiteSummary/*.csproj ./modules/RichSiteSummary/ -COPY ./modules/UrlLimitations/*.csproj ./modules/UrlLimitations/ -COPY ./modules/ChatManagement/*.csproj ./modules/ChatManagement/ -COPY ./modules/Entertainment/*.csproj ./modules/Entertainment/ -COPY ./modules/UserGroupTag/*.csproj ./modules/UserGroupTag/ -RUN dotnet restore Kruzya.TelegramBot.sln - -# Copy all project files -COPY . . -RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ - mkdir /app/modules && \ - cp /app/TelegramBot.*.dll /app/modules/ && \ - rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb - -# Now reuse image with only runtime -FROM mcr.microsoft.com/dotnet/aspnet:6.0.101-alpine3.14-amd64 -WORKDIR /user -COPY --from=build /app /app - -ENV MUSL_LOCPATH /usr/share/i18n/locales/musl -ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false - -RUN apk add --no-cache cmake make musl-dev gcc gettext-dev libintl icu-libs \ - && wget https://gitlab.com/rilian-la-te/musl-locales/-/archive/master/musl-locales-master.zip \ - && unzip musl-locales-master.zip \ - && cd musl-locales-master \ - && cmake -DLOCALE_PROFILE=OFF -D CMAKE_INSTALL_PREFIX:PATH=/usr . && make && make install \ - && cd .. && rm -r musl-locales-master - -ENV LANG ru_RU.UTF-8 -ENV LANGUAGE ru_RU.UTF-8 -ENV LC_ALL ru_RU.UTF-8 - -ENTRYPOINT ["dotnet", "/app/TelegramBot.dll"] diff --git a/docker/Dockerfile.arm64 b/docker/Dockerfile.arm64 deleted file mode 100644 index 25c42fe..0000000 --- a/docker/Dockerfile.arm64 +++ /dev/null @@ -1,44 +0,0 @@ -# Build a project -FROM mcr.microsoft.com/dotnet/sdk:6.0.101-alpine3.14-arm64v8 AS build -WORKDIR /source - -# Copy project and perform restoring -COPY Kruzya.TelegramBot.sln ./ -COPY ./Core/*.csproj ./Core/ -COPY ./tests/*.csproj ./tests/ -COPY ./modules/CombotAntiSpam/*.csproj ./modules/CombotAntiSpam/ -COPY ./modules/Destiny2.WhereIsXur/*.csproj ./modules/Destiny2.WhereIsXur/ -COPY ./modules/RichSiteSummary/*.csproj ./modules/RichSiteSummary/ -COPY ./modules/UrlLimitations/*.csproj ./modules/UrlLimitations/ -COPY ./modules/ChatManagement/*.csproj ./modules/ChatManagement/ -COPY ./modules/Entertainment/*.csproj ./modules/Entertainment/ -COPY ./modules/UserGroupTag/*.csproj ./modules/UserGroupTag/ -RUN dotnet restore Kruzya.TelegramBot.sln - -# Copy all project files -COPY . . -RUN dotnet publish -c release -o /app --no-restore Kruzya.TelegramBot.sln && \ - mkdir /app/modules && \ - cp /app/TelegramBot.*.dll /app/modules/ && \ - rm -f /app/TelegramBot.*.dll /app/TelegramBot.*.pdb - -# Now reuse image with only runtime -FROM mcr.microsoft.com/dotnet/aspnet:6.0.101-alpine3.14-arm64v8 -WORKDIR /user -COPY --from=build /app /app - -ENV MUSL_LOCPATH /usr/share/i18n/locales/musl -ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false - -RUN apk add --no-cache cmake make musl-dev gcc gettext-dev libintl icu-libs \ - && wget https://gitlab.com/rilian-la-te/musl-locales/-/archive/master/musl-locales-master.zip \ - && unzip musl-locales-master.zip \ - && cd musl-locales-master \ - && cmake -DLOCALE_PROFILE=OFF -D CMAKE_INSTALL_PREFIX:PATH=/usr . && make && make install \ - && cd .. && rm -r musl-locales-master - -ENV LANG ru_RU.UTF-8 -ENV LANGUAGE ru_RU.UTF-8 -ENV LC_ALL ru_RU.UTF-8 - -ENTRYPOINT ["dotnet", "/app/TelegramBot.dll"]