diff --git a/build/hassio/Dockerfile b/build/hassio/Dockerfile index ce60ff35..312909f0 100644 --- a/build/hassio/Dockerfile +++ b/build/hassio/Dockerfile @@ -1,23 +1,40 @@ ARG BUILD_FROM -FROM $BUILD_FROM -RUN apk add --no-cache git go ffmpeg +FROM $BUILD_FROM as build -ARG BUILD_ARCH +# 1. Build go2rtc +RUN apk add --no-cache git go RUN git clone https://github.com/AlexxIT/go2rtc \ && cd go2rtc \ - && CGO_ENABLED=0 go build -ldflags "-s -w" -trimpath -o /usr/local/bin + && CGO_ENABLED=0 go build -ldflags "-s -w" -trimpath + +# 2. Download ngrok +ARG BUILD_ARCH # https://github.com/home-assistant/docker-base/blob/master/alpine/Dockerfile RUN if [ "${BUILD_ARCH}" = "aarch64" ]; then BUILD_ARCH="arm64"; \ elif [ "${BUILD_ARCH}" = "armv7" ]; then BUILD_ARCH="arm"; fi \ && cd go2rtc \ && curl $(curl -s "https://raw.githubusercontent.com/ngrok/docker-ngrok/main/releases.json" | jq -r ".${BUILD_ARCH}.url") -o ngrok.zip \ - && unzip ngrok -d /usr/local/bin + && unzip ngrok -RUN rm -r /go2rtc + +# https://devopscube.com/reduce-docker-image-size/ +FROM $BUILD_FROM + +# 3. Copy go2rtc and ngrok to release +COPY --from=build /go2rtc/go2rtc /usr/local/bin +COPY --from=build /go2rtc/ngrok /usr/local/bin + +# 4. Install ffmpeg +# apk base OK: 22 MiB in 40 packages +# ffmpeg OK: 113 MiB in 110 packages +# python3 OK: 161 MiB in 114 packages +RUN apk add --no-cache ffmpeg python3 + +# 5. Copy run to release COPY run.sh / RUN chmod a+x /run.sh diff --git a/build/hassio/run.sh b/build/hassio/run.sh index 6132571a..d59564ca 100644 --- a/build/hassio/run.sh +++ b/build/hassio/run.sh @@ -2,23 +2,13 @@ set +e -# add the feature for update to any version -if [ -f "/config/go2rtc.version" ]; then - branch=`cat /config/go2rtc.version` - echo "Update to version $branch" - git clone --depth 1 --branch "$branch" https://github.com/AlexxIT/go2rtc \ - && cd go2rtc \ - && CGO_ENABLED=0 go build -ldflags "-s -w" -trimpath -o /usr/local/bin \ - && rm -r /go2rtc && rm /config/go2rtc.version -fi - -# set cwd for go2rtc (for config file, Hass itegration, etc) +# set cwd for go2rtc (for config file, Hass integration, etc) cd /config # add the feature to override go2rtc binary from Hass config folder export PATH="/config:$PATH" while true; do - go2rtc - sleep 5 + go2rtc + sleep 5 done \ No newline at end of file