@@ -11,10 +11,10 @@ FROM jlesage/baseimage:alpine-3.9-v2.4.3
1111ARG DOCKER_IMAGE_VERSION=unknown
1212
1313# Define software versions.
14- ARG NGINX_PROXY_MANAGER_VERSION=2.0.14
14+ ARG NGINX_PROXY_MANAGER_VERSION=2.2.0
1515
1616# Define software download URLs.
17- ARG NGINX_PROXY_MANAGER_URL=https://github.com/jc21/nginx-proxy-manager/archive/${NGINX_PROXY_MANAGER_VERSION}.tar.gz
17+ ARG NGINX_PROXY_MANAGER_URL=https://github.com/jc21/nginx-proxy-manager/archive/v ${NGINX_PROXY_MANAGER_VERSION}.tar.gz
1818
1919# Define working directory.
2020WORKDIR /tmp
@@ -84,44 +84,56 @@ RUN \
8484 mkdir nginx-proxy-manager && \
8585 curl -# -L ${NGINX_PROXY_MANAGER_URL} | tar xz --strip 1 -C nginx-proxy-manager && \
8686
87- # Build Nginx Proxy Manager.
88- echo "Building Nginx Proxy Manager..." && \
87+ sed-patch "s/\" version\" : \" 0.0.0\" ,/\" version\" : \" ${NGINX_PROXY_MANAGER_VERSION}\" ,/" nginx-proxy-manager/frontend/package.json && \
88+ sed-patch "s/\" version\" : \" 0.0.0\" ,/\" version\" : \" ${NGINX_PROXY_MANAGER_VERSION}\" ,/" nginx-proxy-manager/backend/package.json && \
89+
8990 cp -r nginx-proxy-manager /app && \
90- cd /app && \
91+
92+ # Build Nginx Proxy Manager frontend.
93+ echo "Building Nginx Proxy Manager frontend..." && \
94+ cd /app/frontend && \
9195 yarn install && \
92- npm --cache /tmp/.npm run-script build && \
93- rm -rf node_modules && \
96+ yarn build && \
97+ /tmp/bin/node-prune && \
98+ cd /tmp && \
99+
100+ # Build Nginx Proxy Manager backend.
101+ echo "Building Nginx Proxy Manager backend..." && \
102+ cd /app/backend && \
94103 yarn install --prod && \
95104 /tmp/bin/node-prune && \
96105 cd /tmp && \
97106
98107 # Install Nginx Proxy Manager.
99108 echo "Installing Nginx Proxy Manager..." && \
100- mkdir -p /opt/nginx-proxy-manager/src && \
101- cp -r /app/dist /opt/nginx-proxy-manager/ && \
102- cp -r /app/node_modules /opt/nginx-proxy-manager/ && \
103- cp -r /app/src/backend /opt/nginx-proxy-manager/src/ && \
104- cp -r /app/package.json /opt/nginx-proxy-manager/ && \
105- cp -r /app/knexfile.js /opt/nginx-proxy-manager/ && \
106- cp -r nginx-proxy-manager/rootfs/etc/nginx /etc/ && \
107- cp -r nginx-proxy-manager/rootfs/var/www /var/ && \
109+ mkdir -p /opt && \
110+ cp -r /app/backend /opt/nginx-proxy-manager && \
111+ cp -r /app/frontend/dist /opt/nginx-proxy-manager/frontend && \
112+ cp -r nginx-proxy-manager/docker/rootfs/etc/nginx /etc/ && \
113+ cp -r nginx-proxy-manager/docker/rootfs/var/www /var/ && \
114+ cp -r nginx-proxy-manager/docker/rootfs/etc/letsencrypt.ini /etc/ && \
115+
116+ # Remove the nginx development config.
117+ rm /etc/nginx/conf.d/dev.conf && \
108118
109119 # Change the management interface port to the unprivileged port 8181.
110- sed-patch 's|81|8181|' /opt/nginx-proxy-manager/src/backend/index.js && \
111- sed-patch 's|81|8181|' /etc/nginx/conf.d/default.conf && \
120+ sed-patch 's|81 default|8181 default|' /etc/nginx/conf.d/production.conf && \
121+
122+ # Change the management interface root.
123+ sed-patch 's|/app/frontend;|/opt/nginx-proxy-manager/frontend;|' /etc/nginx/conf.d/production.conf && \
112124
113125 # Change the HTTP port 80 to the unprivileged port 8080.
114- sed-patch 's|listen 80;|listen 8080;|' /etc/nginx/conf.d/default.conf && \
115- sed-patch 's|listen 80;|listen 8080;|' /opt/nginx-proxy-manager/src/backend/ templates/letsencrypt-request.conf && \
116- sed-patch 's|listen 80;|listen 8080;|' /opt/nginx-proxy-manager/src/backend/ templates/_listen.conf && \
117- sed-patch 's|listen 80 |listen 8080 |' /opt/nginx-proxy-manager/src/backend/ templates/default.conf && \
126+ sed-patch 's|80;|8080;|' /etc/nginx/conf.d/default.conf && \
127+ sed-patch 's|listen 80;|listen 8080;|' /opt/nginx-proxy-manager/templates/letsencrypt-request.conf && \
128+ sed-patch 's|listen 80;|listen 8080;|' /opt/nginx-proxy-manager/templates/_listen.conf && \
129+ sed-patch 's|listen 80 |listen 8080 |' /opt/nginx-proxy-manager/templates/default.conf && \
118130
119131 # Change the HTTPs port 443 to the unprivileged port 4443.
120- sed-patch 's|listen 443 |listen 4443 |' /etc/nginx/conf.d/default.conf && \
121- sed-patch 's|listen 443 |listen 4443 |' /opt/nginx-proxy-manager/src/backend/ templates/_listen.conf && \
132+ sed-patch 's|443 |4443 |' /etc/nginx/conf.d/default.conf && \
133+ sed-patch 's|listen 443 |listen 4443 |' /opt/nginx-proxy-manager/templates/_listen.conf && \
122134
123135 # Fix nginx test command line.
124- sed-patch 's|-g "error_log off;"||' /opt/nginx-proxy-manager/src/backend/ internal/nginx.js && \
136+ sed-patch 's|-g "error_log off;"||' /opt/nginx-proxy-manager/internal/nginx.js && \
125137
126138 # Remove the `user` directive, since we want nginx to run as non-root.
127139 sed-patch 's|user root;|#user root;|' /etc/nginx/nginx.conf && \
@@ -137,13 +149,13 @@ RUN \
137149 ln -sf /config/nginx/ip_ranges.conf /etc/nginx/conf.d/include/ip_ranges.conf && \
138150
139151 # Make sure the config file for resovers is stored in persistent volume.
140- rm /etc/nginx/conf.d/include/resolvers.conf && \
141152 ln -sf /config/nginx/resolvers.conf /etc/nginx/conf.d/include/resolvers.conf && \
142153
143154 # Make sure nginx cache is stored on the persistent volume.
144155 ln -s /config/nginx/cache /var/lib/nginx/cache && \
145156
146157 # Make sure the manager config file is stored in persistent volume.
158+ rm -r /opt/nginx-proxy-manager/config && \
147159 mkdir /opt/nginx-proxy-manager/config && \
148160 ln -s /config/production.json /opt/nginx-proxy-manager/config/production.json && \
149161
0 commit comments