From 0229dcfadd1a5d264aa0f277381341274a805553 Mon Sep 17 00:00:00 2001 From: helto4real Date: Sun, 12 Apr 2020 19:10:28 +0200 Subject: [PATCH] New docker base and S6 support --- Dockerfile | 37 +++++++++++-------- addon/rootfs/build/build.sh | 22 +++++++++++ addon/rootfs/etc/services.d/NetDaemon/finish | 2 +- addon/rootfs/etc/services.d/NetDaemon/run | 12 +++--- .../DaemonRunner/Service/RunnerService.cs | 1 + 5 files changed, 51 insertions(+), 23 deletions(-) create mode 100644 addon/rootfs/build/build.sh diff --git a/Dockerfile b/Dockerfile index 031bda8fe..e2203a81a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,34 @@ # Build the NetDaemon with build container FROM mcr.microsoft.com/dotnet/core/sdk:3.1.200-alpine as build -COPY . ./temp/ - -RUN \ - mkdir -p /data \ - \ - && dotnet \ - publish \ - ./temp/src/Service/Service.csproj \ - -c Release \ - -o ./temp/dist \ - \ - && mv ./temp/dist /app \ - && rm -R ./temp +RUN apk add \ + bash + +# Copy the source to docker container +COPY ./src /tmp/src + +# Copy the build script for minimal single binary build +COPY addon/rootfs/build/build.sh /tmp/build.sh +RUN chmod +x /tmp/build.sh + +# Build the minimal single binary +RUN /bin/bash /tmp/build.sh # Build the target container -FROM ludeeus/container:dotnet-base +FROM netdaemon/base + +# Copy the built binaries and set execute permissions +COPY --from=build /netdaemon/bin/publish /daemon +RUN chmod +x /daemon/Service -COPY --from=build /app /app +# Copy the S6 service scripts +COPY addon/rootfs/etc /etc +# Set default values of NetDaemon env ENV \ HASS_HOST=localhost \ HASS_PORT=8123 \ HASS_TOKEN=NOT_SET \ HASS_DAEMONAPPFOLDER=/data -ENTRYPOINT ["dotnet", "/app/Service.dll"] \ No newline at end of file +ENTRYPOINT ["/init"] \ No newline at end of file diff --git a/addon/rootfs/build/build.sh b/addon/rootfs/build/build.sh new file mode 100644 index 000000000..b1682bda1 --- /dev/null +++ b/addon/rootfs/build/build.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +cd /tmp + +ARC=$(uname -m) + +echo "Building NetDaemon for platform $ARC" + +if [ "$ARC" == "armhf" ]; then + export RID="linux-arm" +elif [ "$ARC" == "aarch64" ]; then + export RID="linux-arm" +elif [ "$ARC" == "x86_64" ]; then + export RID="linux-x64" +else + echo 'NOT VALID ARCHITECTURE' && exit 1 + +fi + +cd src/Service/ +dotnet add package Microsoft.Packaging.Tools.Trimming --version 1.1.0-preview1-26619-01 +dotnet publish -c Release -o /netdaemon/bin/publish -r $RID /p:PublishSingleFile=true /p:PublishTrimmed=true /p:TrimUnusedDependencies=true diff --git a/addon/rootfs/etc/services.d/NetDaemon/finish b/addon/rootfs/etc/services.d/NetDaemon/finish index b443f41af..d7d88f3df 100644 --- a/addon/rootfs/etc/services.d/NetDaemon/finish +++ b/addon/rootfs/etc/services.d/NetDaemon/finish @@ -1,6 +1,6 @@ #!/usr/bin/execlineb -S0 # ============================================================================== -# NetDaemon add-on +# NetDaemon Service # Take down the S6 supervision tree when NetDaemon fails # ============================================================================== if -n { s6-test $# -ne 0 } diff --git a/addon/rootfs/etc/services.d/NetDaemon/run b/addon/rootfs/etc/services.d/NetDaemon/run index 6d54f1384..7cafa6e46 100644 --- a/addon/rootfs/etc/services.d/NetDaemon/run +++ b/addon/rootfs/etc/services.d/NetDaemon/run @@ -1,11 +1,11 @@ -#!/usr/bin/with-contenv bashio +#!/usr/bin/with-contenv /bin/bash + # ============================================================================== -# NetDaemon Add-on +# NetDaemon Service # Starts NetDaemon # ============================================================================== +cd /daemon || echo -e "\033[31mCould not change directory to daemon\033[0m" >&2 -cd /daemon || bashio::exit.nok "Could not change directory to Node-RED" - -bashio::log.info "Starting NetDaemon..." +echo -e "\033[32mStarting NetDaemon...\033[0m" >&2 -exec ./Service +./Service diff --git a/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs b/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs index 8c723df43..453b8416f 100644 --- a/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs +++ b/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs @@ -53,6 +53,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) if (config == null) { _logger.LogError("No config specified, file or environment variables! Exiting..."); + return; }