-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
executable file
·147 lines (139 loc) · 4.45 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
ARG BUILD_FROM=ghcr.io/hassio-addons/base-nodejs:0.2.1
# hadolint ignore=DL3006
FROM ${BUILD_FROM}
# Required for webpack config of NPM
ENV NODE_OPTIONS="--openssl-legacy-provider"
# Set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Copy Python requirements file & patches
COPY requirements.txt /tmp/
COPY patches/*.patch /usr/src/
# Setup base
ARG NGINX_PROXY_MANAGER_VERSION="v2.11.1"
# hadolint ignore=DL3003,DL3042
RUN \
apk add --no-cache --virtual .build-dependencies \
build-base=0.5-r3 \
git=2.43.0-r0 \
libffi-dev=3.4.4-r3 \
openssl-dev=3.1.4-r6 \
patch=2.7.6-r10 \
python3-dev=3.11.9-r0 \
\
&& apk add --no-cache \
apache2-utils=2.4.59-r0 \
certbot=2.7.4-r0 \
libcap=2.69-r1 \
logrotate=3.21.0-r1 \
nginx-mod-stream=1.24.0-r15 \
nginx=1.24.0-r15 \
openssl=3.1.4-r6 \
py3-pip=23.3.1-r0 \
python3=3.11.9-r0 \
\
&& pip3 install -r /tmp/requirements.txt \
\
&& yarn global add modclean \
\
&& curl -J -L -o /tmp/nginxproxymanager.tar.gz \
"https://github.com/NginxProxyManager/nginx-proxy-manager/archive/${NGINX_PROXY_MANAGER_VERSION}.tar.gz" \
&& mkdir /app \
&& tar zxvf \
/tmp/nginxproxymanager.tar.gz \
--strip 1 -C /app \
\
&& for i in /usr/src/*.patch; do \
patch -d /app -p 1 < "${i}" --verbose; done \
\
&& cd /app/frontend \
&& yarn install \
&& yarn build \
&& rm -rf node_modules \
\
&& mkdir -p /opt/nginx-proxy-manager/frontend \
&& cp -r /app/frontend/dist/. /opt/nginx-proxy-manager/frontend/ \
\
&& cd /app/backend \
&& yarn install \
&& rm -rf node_modules \
&& cp -r /app/backend/. /opt/nginx-proxy-manager/ \
\
&& cp -R /app/global/. /opt/nginx-proxy-manager/global/ \
\
&& cd /opt/nginx-proxy-manager \
&& yarn install \
&& rm -rf /etc/services.d/frontend \
&& rm -rf /opt/nginx-proxy-manager/config \
\
&& rm -f -r /etc/nginx \
&& cp -r /app/docker/rootfs/etc/nginx /etc/nginx \
&& rm -f /etc/nginx/conf.d/dev.conf \
\
&& cp /app/docker/rootfs/etc/letsencrypt.ini /etc \
&& cp /app/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d \
\
&& sed -i "s#user npm;#user root;#" /etc/nginx/nginx.conf \
&& sed -i "s#root /app/frontend;#root /opt/nginx-proxy-manager/frontend;#" \
/etc/nginx/conf.d/production.conf \
&& sed -i "s#table.string('id').notNull().primary();#table.string('id', 32).notNull().primary();#" \
/opt/nginx-proxy-manager/migrations/20190227065017_settings.js \
\
&& mkdir -p \
/run/nginx \
\
&& modclean \
--path /opt/nginx-proxy-manager \
--no-progress \
--keep-empty \
--run \
\
&& yarn global remove modclean \
&& yarn cache clean \
\
&& apk del --purge .build-dependencies \
\
&& rm -f -r \
/app \
/etc/init.d/nginx \
/etc/logrotate.d/nginx \
/opt/nginx-proxy-manager/node_modules/bcrypt/build \
/root/.cache \
/root/.node-gyp \
/tmp/.[!.]* \
/tmp/* \
/usr/lib/node_modules \
/usr/local/share/.cache \
/var/lib/nginx \
/var/log/nginx \
/var/tmp/nginx \
/var/www
# Copy root filesystem
COPY rootfs /
RUN adduser -D npm
# 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="${BUILD_NAME}" \
io.hass.description="${BUILD_DESCRIPTION}" \
io.hass.arch="${BUILD_ARCH}" \
io.hass.type="addon" \
io.hass.version=${BUILD_VERSION} \
maintainer="Franck Nijhof <frenck@addons.community>" \
org.opencontainers.image.title="${BUILD_NAME}" \
org.opencontainers.image.description="${BUILD_DESCRIPTION}" \
org.opencontainers.image.vendor="Home Assistant Community Add-ons" \
org.opencontainers.image.authors="Franck Nijhof <frenck@addons.community>" \
org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.url="https://addons.community" \
org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \
org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \
org.opencontainers.image.created=${BUILD_DATE} \
org.opencontainers.image.revision=${BUILD_REF} \
org.opencontainers.image.version=${BUILD_VERSION}