forked from alexbelgium/hassio-addons
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
156 lines (136 loc) · 5.07 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#============================#
# ALEXBELGIUM'S DOCKERFILE #
#============================#
# _.------.
# _.-` ('>.-`"""-.
# '.--'` _'` _ .--.)
# -' '-.-';` `
# ' - _.' ``'--.
# '---` .-'""`
# /`
#=== Home Assistant Addon ===#
#################
# 1 Build Image #
#################
ARG BUILD_FROM=ghcr.io/hassio-addons/base/amd64:11.0.0
# hadolint ignore=DL3006
FROM $BUILD_FROM
##################
# 2 Modify Image #
##################
# Set S6 wait time
ENV S6_CMD_WAIT_FOR_SERVICES=1 \
S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \
S6_SERVICES_GRACETIME=0
ENV LANG C.UTF-8
# Environment variables
ENV APP_ID="spotweb"
ENV APP_NAME="Spotweb"
ENV APP_DIR="/app"
ENV BUILD_UPSTREAM="1.5.4"
# Set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Setup base
# hadolint ignore=DL3003
# Install app dependencies
ENV PHPVERS="81"
RUN apk -U update && \
# hadolint ignore=DL3017
apk -U upgrade && \
apk -U add --no-cache \
git \
nginx \
php$PHPVERS \
php$PHPVERS-fpm \
php$PHPVERS-curl \
php$PHPVERS-dom \
php$PHPVERS-gettext \
php$PHPVERS-xml \
php$PHPVERS-simplexml \
php$PHPVERS-zip \
php$PHPVERS-zlib \
php$PHPVERS-gd \
php$PHPVERS-openssl \
php$PHPVERS-mysqli \
php$PHPVERS-pdo \
php$PHPVERS-pdo_mysql \
php$PHPVERS-pgsql \
php$PHPVERS-pdo_pgsql \
php$PHPVERS-sqlite3 \
php$PHPVERS-pdo_sqlite \
php$PHPVERS-json \
php$PHPVERS-mbstring \
php$PHPVERS-ctype \
php$PHPVERS-opcache \
php$PHPVERS-session \
mariadb-client \
\
&& mkdir -p /app \
# Install latest Spotweb release
&& git clone --depth=1 https://github.com/spotweb/spotweb.git /app \
# spotweb needs a timezone set in the php.ini
# TODO: Can we dynamically set the correct timezone here ?
&& sed -i "s/;date.timezone =/date.timezone = \"Europe\/Amsterdam\"/g" /etc/php*/php.ini \
&& mkdir /app/cache \
&& mkdir /var/tmp/nginx
##################
# 3 Install apps #
##################
# Add rootfs
COPY rootfs/ /
# Corrects permissions for /app directory
RUN if [ -d /app ]; then chown -R nginx /app; fi
# Corrects permissions for s6 v3
RUN if [ -d /etc/cont-init.d ]; then chmod -R 755 /etc/cont-init.d; fi && \
if [ -d /etc/services.d ]; then chmod -R 755 /etc/services.d; fi && \
if [ -f /entrypoint.sh ]; then chmod 755 /entrypoint.sh; fi
# Modules
ARG MODULES="01-custom_script.sh"
# Automatic modules download
RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \
&& if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \
&& apt-get update && apt-get install -yqq --no-install-recommends ca-certificates || apk add --no-cache ca-certificates >/dev/null || true \
&& mkdir -p /etc/cont-init.d \
&& for scripts in $MODULES; do echo "$scripts" && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" && [ "$(sed -n '/\/bin/p;q' /etc/cont-init.d/"$scripts")" != "" ] || (echo "script failed to install $scripts" && exit 1); done \
&& chmod -R 755 /etc/cont-init.d
# Manual apps
ENV PACKAGES=""
# Automatic apps & bashio
# hadolint ignore=SC2015
RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \
&& if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \
&& curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \
&& chmod 777 /automatic_packages.sh \
&& eval /./automatic_packages.sh "${PACKAGES:-}" \
&& rm /automatic_packages.sh
################
# 4 Entrypoint #
################
############
# 5 Labels #
############
# Build arguments
ARG BUILD_ARCH
ARG BUILD_DATE
ARG BUILD_DESCRIPTION
ARG BUILD_NAME
ARG BUILD_REF
ARG BUILD_REPOSITORY
ARG BUILD_VERSION
# Labels
LABEL \
io.hass.name="${APP_NAME}" \
io.hass.description="${APP_NAME} Add-on for Home Assistant" \
io.hass.arch="${BUILD_ARCH}" \
io.hass.type="addon" \
io.hass.version=${BUILD_VERSION} \
maintainer="Wouter" \
org.label-schema.description="${APP_NAME} Add-on for Home Assistant" \
org.label-schema.build-date=${BUILD_DATE} \
org.label-schema.name="${APP_NAME}" \
org.label-schema.schema-version="1.0" \
org.label-schema.url="https://github.com/alexbelgium/hassio-addons/${APP_ID}" \
org.label-schema.usage="https://github.com/alexbelgium/hassio-addons/tree/master/${APP_ID}/README.md" \
org.label-schema.vcs-ref=${BUILD_REF} \
org.label-schema.vcs-url="https://github.com/alexbelgium/hassio-addons/${APP_ID}" \
org.label-schema.vendor="Alex Belgium's Add-ons for Home Assistant"