Use official python as base and add tini

This commit is contained in:
Felipe Santos
2022-11-18 14:49:37 -03:00
parent b09bbd79c4
commit 15d9d4ebf4
5 changed files with 39 additions and 52 deletions

View File

@@ -1,8 +0,0 @@
.git/
assets/
examples/
.dockerignore
config.yaml
Dockerfile
README.md

View File

@@ -1,12 +1,12 @@
# https://github.com/hassio-addons/addon-base-python/releases
ARG BASE_VERSION="9.0.1"
# https://hub.docker.com/_/python/tags?page=1&name=-alpine
ARG PYTHON_VERSION="3.10.8"
# https://hub.docker.com/_/golang/tags?page=1&name=-alpine
ARG GO_VERSION="1.19.2"
ARG GO_VERSION="1.19.3"
# https://hub.docker.com/r/ngrok/ngrok/tags?page=1&name=-alpine
ARG NGROK_VERSION="3.1.0"
FROM ghcr.io/hassio-addons/base-python:${BASE_VERSION} AS base
FROM python:${PYTHON_VERSION}-alpine AS base
FROM golang:${GO_VERSION}-alpine AS go
@@ -20,8 +20,15 @@ FROM go AS build
WORKDIR /workspace
COPY . .
# Cache dependencies
COPY go.mod go.sum ./
RUN go mod download
# Build binary
COPY cmd cmd
COPY pkg pkg
COPY www www
COPY main.go .
RUN CGO_ENABLED=0 go build -ldflags "-s -w" -trimpath
@@ -30,13 +37,16 @@ FROM scratch AS rootfs
COPY --from=build /workspace/go2rtc /usr/local/bin/
COPY --from=ngrok /bin/ngrok /usr/local/bin/
COPY ./docker/rootfs/ /
COPY ./docker/run.sh /run.sh
# Final stage
# Final image
FROM base
# Install ffmpeg
RUN apk add --no-cache ffmpeg
RUN apk add --no-cache bash tini ffmpeg
COPY --from=rootfs / /
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/run.sh"]

View File

@@ -1,12 +0,0 @@
#!/command/with-contenv bashio
# ==============================================================================
# Take down the S6 supervision tree when go2rtc fails
# ==============================================================================
# shellcheck shell=bash
if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then
bashio::log.warning "go2rtc crashed, halting add-on"
/run/s6/basedir/bin/halt
fi
bashio::log.info "go2rtc stopped, restarting..."

View File

@@ -1,23 +0,0 @@
#!/command/with-contenv bashio
# ==============================================================================
# Runs go2rtc
# ==============================================================================
# shellcheck shell=bash
bashio::log.info 'Starting go2rtc...'
declare config_path
declare binary_path
config_path="/config"
binary_path="/usr/local/bin/go2rtc"
if [[ -x "${config_path}/go2rtc" ]]; then
binary_path="${config_path}/go2rtc"
bashio::log.warning "Using go2rtc binary from '${binary_path}'"
fi
# set cwd for go2rtc (for config file, Hass integration, etc)
cd "${config_path}" || bashio::exit.nok "Could not change working directory"
exec "${binary_path}"

20
docker/run.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
# ==============================================================================
# Runs go2rtc
# ==============================================================================
echo 'Starting go2rtc...' >&2
readonly config_path="/config"
if [[ -x "${config_path}/go2rtc" ]]; then
readonly binary_path="${config_path}/go2rtc"
echo "Using go2rtc binary from '${binary_path}' instead of the embedded one" >&2
else
readonly binary_path="/usr/local/bin/go2rtc"
fi
# set cwd for go2rtc (for config file, Hass integration, etc)
cd "${config_path}" || echo "Could not change working directory to '${config_path}'" >&2
exec "${binary_path}"