Skip to content

Commit d526ab4

Browse files
committed
新增geoip,Brotli,headers-more模块,改为非root执行.
1 parent be328e8 commit d526ab4

File tree

3 files changed

+66
-44
lines changed

3 files changed

+66
-44
lines changed

Dockerfile

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
FROM alpine:3.5
22
LABEL maintainer "v.la@live.cn"
33

4+
ENV UID=1000 GID=1000 \
5+
GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8
6+
47
ENV NGINX_VERSION=1.12.1 \
58
LUA_MODULE_VERSION=0.10.9rc8 \
69
NGINX_DEVEL_KIT_VERSION=0.3.0 \
710
NGINX_CACHE_PURGE_VERSION=2.3 \
8-
GEOIP_VERSION=1.6.11\
9-
NGINX_USER=nginx \
11+
GEOIP_VERSION=1.6.11 \
12+
HEADERS_MORE_VERSION=0.32 \
1013
NGINX_SITECONF_DIR=/etc/nginx/sites-enabled \
1114
NGINX_LOG_DIR=/var/log/nginx \
12-
NGINX_TEMP_DIR=/var/lib/nginx \
15+
NGINX_TEMP_DIR=/var/cache/nginx \
1316
NGINX_SETUP_DIR=/usr/src/nginx
1417

1518
ARG WITH_DEBUG=false
@@ -18,14 +21,15 @@ ARG WITH_LUA=true
1821
ARG WITH_PURGE=true
1922
ARG WITH_UPSTREAM_CHECK=true
2023

21-
2224
COPY setup/ ${NGINX_SETUP_DIR}/
2325
RUN sh ${NGINX_SETUP_DIR}/install.sh
2426

2527
COPY entrypoint.sh /sbin/entrypoint.sh
2628
RUN chmod 755 /sbin/entrypoint.sh
2729

28-
EXPOSE 80/tcp 443/tcp
30+
COPY nginx.conf /etc/nginx/nginx.conf
31+
32+
EXPOSE 8000/tcp 4430/tcp
2933

3034
VOLUME ["${NGINX_SITECONF_DIR}"]
3135
ENTRYPOINT ["/sbin/entrypoint.sh"]

entrypoint.sh

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,10 @@
11
#!/bin/sh
22
set -e
33

4-
create_log_dir() {
5-
mkdir -p ${NGINX_LOG_DIR}
6-
chmod -R 0755 ${NGINX_LOG_DIR}
7-
chown -R ${NGINX_USER}:root ${NGINX_LOG_DIR}
8-
}
9-
10-
create_tmp_dir(){
11-
mkdir -p ${NGINX_TEMP_DIR}
12-
chown -R ${NGINX_USER}:root ${NGINX_TEMP_DIR}
13-
}
14-
15-
create_siteconf_dir() {
16-
mkdir -p ${NGINX_SITECONF_DIR}
17-
chmod -R 755 ${NGINX_SITECONF_DIR}
18-
}
19-
20-
create_log_dir
21-
create_tmp_dir
22-
create_siteconf_dir
4+
mkdir -p ${NGINX_LOG_DIR} ${NGINX_TEMP_DIR} ${NGINX_SITECONF_DIR}
5+
chmod -R 0755 ${NGINX_LOG_DIR}
6+
chmod -R 0755 ${NGINX_SITECONF_DIR}
7+
chown -R $UID:$GID $NGINX_LOG_DIR $NGINX_TEMP_DIR /etc/nginx /var/www
238

249
#允许参数传递到nginx
2510
if [[ "${1:0:1}" = '-' ]]; then
@@ -35,7 +20,8 @@ fi
3520

3621
if [[ -z "${1}" ]]; then
3722
echo "Starting nginx..."
38-
exec $(which nginx) -c /etc/nginx/nginx.conf -g "daemon off;" ${EXTRA_ARGS}
23+
#exec su-exec $UID:$GID /sbin/tini -- nginx
24+
exec su-exec $UID:$GID $(which nginx) -g "daemon off;" ${EXTRA_ARGS}
3925
else
4026
exec "$@"
4127
fi

setup/install.sh

Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
11
#!/bin/sh
22
set -e
33

4-
#sed '1i\http://mirrors.ustc.edu.cn/alpine/v3.5/main/' /etc/apk/repositories
4+
# cat > /etc/apk/repositories <<EOF
5+
# https://mirrors.ustc.edu.cn/alpine/latest-stable/main
6+
# https://mirrors.ustc.edu.cn/alpine/latest-stable/community
7+
# EOF
8+
# apk update
59

610
NGINX_DOWNLOAD_URL="http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz"
711
NGINX_DEVEL_KIT_URL="https://github.com/simpl/ngx_devel_kit/archive/v${NGINX_DEVEL_KIT_VERSION}.tar.gz"
812
LUA_URL="https://github.com/openresty/lua-nginx-module/archive/v${LUA_MODULE_VERSION}.tar.gz"
913
NGINX_CACHE_PURGE_URL="https://github.com/FRiCKLE/ngx_cache_purge/archive/${NGINX_CACHE_PURGE_VERSION}.tar.gz"
1014
NGINX_UPSTREAM_CHECK_URL="https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.tar.gz"
1115
MAXMIND_URL="https://github.com/maxmind/geoip-api-c/releases/download/v${GEOIP_VERSION}/GeoIP-${GEOIP_VERSION}.tar.gz"
16+
HEADERS_MORE_URL="https://github.com/openresty/headers-more-nginx-module/archive/v${HEADERS_MORE_VERSION}.tar.gz"
1217

13-
BUILD_DEPENDENCIES="gcc patch libc-dev make openssl-dev \
14-
curl pcre-dev zlib-dev linux-headers luajit-dev \
15-
gnupg libxslt-dev gd-dev perl-dev git geoip-dev ca-certificates"
18+
BUILD_DEPENDENCIES="build-base linux-headers ca-certificates \
19+
patch openssl-dev cmake autoconf automake go \
20+
curl pcre-dev zlib-dev luajit-dev libtool \
21+
gnupg libxslt-dev gd-dev perl-dev git geoip-dev git"
1622

1723
${WITH_DEBUG} && {
1824
EXTRA_ARGS="${EXTRA_ARGS} --with-debug"
1925
}
2026

21-
#mkdir -p ${NGINX_SETUP_DIR}
27+
mkdir -p ${NGINX_SETUP_DIR}
2228
cd ${NGINX_SETUP_DIR}
2329

2430
#build dependencies
@@ -46,6 +52,7 @@ ${WITH_UPSTREAM_CHECK} && {
4652
tar -zxC "${NGINX_SETUP_DIR}" -f "${NGINX_SETUP_DIR}/ngx_upstream_check.tar"
4753
}
4854

55+
#lua module support
4956
${WITH_LUA} && {
5057
EXTRA_ARGS="${EXTRA_ARGS} --add-module=${NGINX_SETUP_DIR}/lua-nginx-module-${LUA_MODULE_VERSION}"
5158

@@ -56,24 +63,54 @@ ${WITH_LUA} && {
5663
export LUAJIT_INC=/usr/include/luajit-2.1
5764
}
5865

66+
#headers-more module support
67+
EXTRA_ARGS="${EXTRA_ARGS} --add-module=${NGINX_SETUP_DIR}/headers-more-nginx-module-${HEADERS_MORE_VERSION}"
68+
curl -fSL "${HEADERS_MORE_URL}" -o "${NGINX_SETUP_DIR}/headers-more-nginx-module-${HEADERS_MORE_VERSION}.tar.gz"
69+
tar -zxC "${NGINX_SETUP_DIR}" -f "${NGINX_SETUP_DIR}/headers-more-nginx-module-${HEADERS_MORE_VERSION}.tar.gz"
70+
71+
#ngx_brotli module support
72+
EXTRA_ARGS="${EXTRA_ARGS} --add-module=${NGINX_SETUP_DIR}/ngx_brotli"
73+
git clone https://github.com/bagder/libbrotli --depth=1 ${NGINX_SETUP_DIR}/libbrotli
74+
cd "${NGINX_SETUP_DIR}/libbrotli"
75+
./autogen.sh && ./configure && make -j $(getconf _NPROCESSORS_ONLN) && make install
76+
git clone --depth=1 https://github.com/google/ngx_brotli "${NGINX_SETUP_DIR}/ngx_brotli"
77+
cd "${NGINX_SETUP_DIR}/ngx_brotli"
78+
git submodule update --init
79+
5980
# install geoip
6081
curl -fSL $MAXMIND_URL -o "${NGINX_SETUP_DIR}/geoip_module.tar"
6182
tar -zxC "${NGINX_SETUP_DIR}" -f "${NGINX_SETUP_DIR}/geoip_module.tar"
6283
cd ${NGINX_SETUP_DIR}/GeoIP-${GEOIP_VERSION}
63-
./configure && make && make check && make install
84+
./configure && make -j $(getconf _NPROCESSORS_ONLN) && make check && make install
6485

65-
#nginx user role
86+
#nginx default www
6687
mkdir -p /var/www/nginx
67-
addgroup -S ${NGINX_USER}
68-
adduser -D -S -h /var/www/nginx \
69-
-u 1000 -s /sbin/nologin -G ${NGINX_USER} ${NGINX_USER}
7088

7189
#build nginx
7290
curl -fSL "${NGINX_DOWNLOAD_URL}" -o "${NGINX_SETUP_DIR}/nginx.tar"
7391
tar -zxC "${NGINX_SETUP_DIR}" -f "${NGINX_SETUP_DIR}/nginx.tar"
7492

7593
cd ${NGINX_SETUP_DIR}/nginx-${NGINX_VERSION}
7694

95+
curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc -o "${NGINX_SETUP_DIR}/nginx.tar.gz.asc"
96+
export GNUPGHOME="$(mktemp -d)"
97+
found='';
98+
for server in \
99+
ha.pool.sks-keyservers.net \
100+
hkp://keyserver.ubuntu.com:80 \
101+
hkp://p80.pool.sks-keyservers.net:80 \
102+
pgp.mit.edu \
103+
; do \
104+
echo "Fetching GPG key $GPG_KEYS from $server"; \
105+
gpg --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$GPG_KEYS" && found=yes && break; \
106+
done;
107+
108+
test -z "$found" && echo >&2 "error: failed to fetch GPG key $GPG_KEYS" && exit 1;
109+
gpg --batch --verify "${NGINX_SETUP_DIR}/nginx.tar.gz.asc" "${NGINX_SETUP_DIR}/nginx.tar"
110+
rm -r "$GNUPGHOME" "${NGINX_SETUP_DIR}/nginx.tar.gz.asc"
111+
112+
113+
#nginx_upstream_check_module patch
77114
if [[ ${WITH_UPSTREAM_CHECK} ]];then
78115
patch -p0 < ${NGINX_SETUP_DIR}/nginx_upstream_check_module-master/check_1.11.5+.patch
79116
fi
@@ -86,9 +123,7 @@ fi
86123
--http-log-path=/var/log/nginx/access.log \
87124
--error-log-path=/var/log/nginx/error.log \
88125
--lock-path=/var/lock/nginx.lock \
89-
--pid-path=/run/nginx.pid \
90-
--user=${NGINX_USER} \
91-
--group=${NGINX_USER} \
126+
--pid-path=/tmp/nginx.pid \
92127
--http-client-body-temp-path=${NGINX_TEMP_DIR}/body \
93128
--http-fastcgi-temp-path=${NGINX_TEMP_DIR}/fastcgi \
94129
--http-proxy-temp-path=${NGINX_TEMP_DIR}/proxy \
@@ -137,8 +172,8 @@ cp ${NGINX_SETUP_DIR}/test.conf /etc/nginx/
137172

138173
cat > ${NGINX_SITECONF_DIR}/default.conf <<EOF
139174
server {
140-
listen 80 default_server;
141-
listen [::]:80 default_server ipv6only=on;
175+
listen 8000 default_server;
176+
listen [::]:8000 default_server ipv6only=on;
142177
server_name localhost;
143178
144179
root /var/www/nginx/html;
@@ -171,6 +206,7 @@ RUN_DEPENDENCIES="$( \
171206
| xargs -r apk info --installed \
172207
| sort -u \
173208
)"
209+
RUN_DEPENDENCIES="$RUN_DEPENDENCIES su-exec"
174210
echo "install rundeps $RUN_DEPENDENCIES"
175211
apk add --no-cache --virtual .nginx-rundeps $RUN_DEPENDENCIES
176212

@@ -180,7 +216,3 @@ apk del .gettext
180216
mv /tmp/envsubst /usr/local/bin/
181217
cd /
182218
rm -rf ${NGINX_SETUP_DIR}/
183-
184-
# forward request and error logs to docker log collector
185-
ln -sf /dev/stdout /var/log/nginx/access.log
186-
ln -sf /dev/stderr /var/log/nginx/error.log

0 commit comments

Comments
 (0)