forked from alexbelgium/hassio-addons
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
156 lines (133 loc) · 4.42 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
# Corrects permissions for /app directory
RUN if [ -d /app ]; then chown -R nginx /app; fi
##################
# 3 Install apps #
##################
# Copy local files
COPY rootfs/ /
# Uses /bin for compatibility purposes
# hadolint ignore=DL4005
RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \
if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi
# Modules
ARG MODULES="01-custom_script.sh"
# Automatic modules download
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_automodules.sh"
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
# Manual apps
ENV PACKAGES=""
# Automatic apps & bashio
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh"
RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh
################
# 4 Entrypoint #
################
# Add entrypoint
ENV S6_STAGE2_HOOK=/ha_entrypoint.sh
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh"
# Entrypoint modifications
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh"
RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.sh
############
# 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"