@@ -14,6 +14,7 @@ $0 [options]\n\n
1414-w\t\t\t- Add NGINX App Protect WAF (requires NGINX Plus)\n
1515-O\t\t\t- Use NGINX Open Source instead of NGINX Plus\n
1616-u\t\t\t- Build unprivileged image (only for NGINX Plus)\n
17+ -i [uid:gid]\t\t- Set NGINX UID and GID (only for unprivileged images)\n
1718-a [2|3]\t\t- Add NGINX Agent v2 or v3\n\n
1819=== Examples:\n\n
1920NGINX Plus and NGINX Agent image:\n
@@ -25,107 +26,127 @@ NGINX Plus, NGINX App Protect WAF and NGINX Agent image:\n
2526NGINX Plus, NGINX App Protect WAF and NGINX Agent unprivileged image:\n
2627 $0 -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-docker:plus-nap-agent-nonroot -w -u -a 2\n\n
2728
29+ NGINX Plus, NGINX App Protect WAF and NGINX Agent unprivileged image, custom UID and GID:\n
30+ $0 -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-docker:plus-nap-agent-nonroot -w -u -i 1234:1234 -a 2\n\n
31+
2832NGINX Opensource and NGINX Agent image:\n
2933 $0 -O -t registry.ff.lan:31005/nginx-docker:oss-root -a 2\n"
3034
31- while getopts ' ht:C:K:a:wOu' OPTION
35+ NGINX_UID=101
36+ NGINX_GID=101
37+
38+ while getopts ' ht:C:K:a:wOui:' OPTION
3239do
33- case " $OPTION " in
34- h)
35- echo -e $BANNER
36- exit
37- ;;
38- t)
39- IMAGENAME=$OPTARG
40- ;;
41- C)
42- NGINX_CERT=$OPTARG
43- ;;
44- K)
45- NGINX_KEY=$OPTARG
46- ;;
47- a)
48- NGINX_AGENT=true
49- NGINX_AGENT_VERSION=$OPTARG
50- ;;
51- w)
52- NAP_WAF=true
53- ;;
54- O)
55- NGINX_OSS=true
56- ;;
57- u)
58- UNPRIVILEGED=true
59- ;;
60- esac
40+ case " $OPTION " in
41+ h)
42+ echo -e $BANNER
43+ exit
44+ ;;
45+ t)
46+ IMAGENAME=$OPTARG
47+ ;;
48+ C)
49+ NGINX_CERT=$OPTARG
50+ ;;
51+ K)
52+ NGINX_KEY=$OPTARG
53+ ;;
54+ a)
55+ NGINX_AGENT=true
56+ NGINX_AGENT_VERSION=$OPTARG
57+ ;;
58+ w)
59+ NAP_WAF=true
60+ ;;
61+ O)
62+ NGINX_OSS=true
63+ ;;
64+ u)
65+ UNPRIVILEGED=true
66+ ;;
67+ i)
68+ NGINX_UID=` echo $OPTARG | awk -F: ' {print $1}' `
69+ NGINX_GID=` echo $OPTARG | awk -F: ' {print $2}' `
70+ ;;
71+ esac
6172done
6273
6374if [ -z " $1 " ]
6475then
65- echo -e $BANNER
66- exit
76+ echo -e $BANNER
77+ exit
6778fi
6879
6980if [ -z " ${IMAGENAME} " ]
7081then
71- echo " Docker image name is required"
72- exit
82+ echo " Docker image name is required"
83+ exit
7384fi
7485
7586if [ -z " ${NGINX_AGENT_VERSION} " ]
7687then
77- echo " NGINX Agent version is required"
78- exit
88+ echo " NGINX Agent version is required"
89+ exit
7990fi
8091
8192if ([ -z " ${NGINX_OSS} " ] && ([ -z " ${NGINX_CERT} " ] || [ -z " ${NGINX_KEY} " ]) )
8293then
83- echo " NGINX certificate and key are required for automated installation "
84- exit
94+ echo " NGINX certificate and key are required for NGINX Plus "
95+ exit
8596fi
8697
87- echo " => Target docker image is $IMAGENAME "
98+ if ([ -z " ${NGINX_UID} " ] || -z " ${NGINX_GID} " ])
99+ then
100+ echo " Invalid UID and/or GID"
101+ exit
102+ fi
88103
89104if [ " ${NGINX_AGENT} " ]
90105then
91- if [ " ${NGINX_AGENT_VERSION} " -eq " 2" ] || [ " ${NGINX_AGENT_VERSION} " -eq " 3" ]
92- then
93- echo " => Building with NGINX Agent v${NGINX_AGENT_VERSION} "
94- else
95- echo " NGINX Agent version must be either '2' or '3'"
96- exit
97- fi
106+ if [ " ${NGINX_AGENT_VERSION} " -eq " 2" ] || [ " ${NGINX_AGENT_VERSION} " -eq " 3" ]
107+ then
108+ echo " => Building with NGINX Agent v${NGINX_AGENT_VERSION} "
109+ else
110+ echo " NGINX Agent version must be either '2' or '3'"
111+ exit
112+ fi
98113fi
99114
115+ echo " => Target docker image is $IMAGENAME "
116+
100117if ([ ! -z " ${NAP_WAF} " ] && [ -z " ${NGINX_OSS} " ])
101118then
102- echo " => Building with NGINX App Protect WAF"
103- OPT_PLATFORM=" --platform linux/amd64" # for NGINX App Protect WAF, which is only available for x86_64
119+ echo " => Building with NGINX App Protect WAF"
120+ OPT_PLATFORM=" --platform linux/amd64" # for NGINX App Protect WAF, which is only available for x86_64
104121fi
105122
106123if [ -z " ${NGINX_OSS} " ]
107124then
108- if [ -z " ${UNPRIVILEGED} " ]
109- then
110- DOCKERFILE_NAME=Dockerfile.plus
111- echo " => Building with NGINX Plus"
112- else
113- DOCKERFILE_NAME=Dockerfile.plus.unprivileged
114- echo " => Building with NGINX Plus unprivileged"
115- fi
116-
117- DOCKER_BUILDKIT=1 docker build --no-cache -f $DOCKERFILE_NAME \
118- --secret id=nginx-key,src=$NGINX_KEY --secret id=nginx-crt,src=$NGINX_CERT \
119- --build-arg NAP_WAF=$NAP_WAF --build-arg NGINX_AGENT=$NGINX_AGENT \
120- --build-arg NGINX_AGENT_VERSION=$NGINX_AGENT_VERSION \
121- $OPT_PLATFORM \
122- -t $IMAGENAME .
125+ if [ -z " ${UNPRIVILEGED} " ]
126+ then
127+ DOCKERFILE_NAME=Dockerfile.plus
128+ echo " => Building with NGINX Plus"
129+ else
130+ DOCKERFILE_NAME=Dockerfile.plus.unprivileged
131+ echo " => Building with NGINX Plus unprivileged"
132+ fi
133+
134+ echo " => Using UID:GID $NGINX_UID :$NGINX_GID "
135+
136+ DOCKER_BUILDKIT=1 docker build --no-cache -f $DOCKERFILE_NAME \
137+ --secret id=nginx-key,src=$NGINX_KEY --secret id=nginx-crt,src=$NGINX_CERT \
138+ --build-arg NAP_WAF=$NAP_WAF --build-arg NGINX_AGENT=$NGINX_AGENT \
139+ --build-arg NGINX_AGENT_VERSION=$NGINX_AGENT_VERSION \
140+ --build-arg UID=$NGINX_UID \
141+ --build-arg GID=$NGINX_GID \
142+ $OPT_PLATFORM \
143+ -t $IMAGENAME .
123144else
124- echo " => Building with NGINX Open Source"
125- DOCKER_BUILDKIT=1 docker build --no-cache -f Dockerfile.oss \
126- --build-arg NGINX_AGENT=$NGINX_AGENT \
127- --build-arg NGINX_AGENT_VERSION=$NGINX_AGENT_VERSION \
128- -t $IMAGENAME .
145+ echo " => Building with NGINX Open Source"
146+ DOCKER_BUILDKIT=1 docker build --no-cache -f Dockerfile.oss \
147+ --build-arg NGINX_AGENT=$NGINX_AGENT \
148+ --build-arg NGINX_AGENT_VERSION=$NGINX_AGENT_VERSION \
149+ -t $IMAGENAME .
129150fi
130151
131152echo " => Build complete for $IMAGENAME "
0 commit comments