Nginx compiled with lua docker container to serve static scripts and other purpose
FROM ubuntu
# Shameless adoptation of https://github.com/jamescmartinez/nginx-s3-upload
MAINTAINER Valmik Roy<valmikroy@gmail.com>
# Install prerequisites for Nginx compile
RUN apt-get update && \
apt-get install -y wget tar gcc libpcre3-dev zlib1g-dev make libssl-dev libluajit-5.1-common luajit libluajit-5.1-dev curl vim
# Download Nginx
WORKDIR /tmp
RUN /usr/bin/curl -o /etc/ssl/certs/DigiCertSHA2SecureServerCA.crt https://www.digicert.com/CACerts/DigiCertSHA2SecureServerCA.crt
RUN update-ca-certificates
RUN wget http://nginx.org/download/nginx-1.6.2.tar.gz -O nginx.tar.gz && \
mkdir nginx && \
tar xf nginx.tar.gz -C nginx --strip-components=1
# Download Nginx modules
RUN wget https://github.com/openresty/echo-nginx-module/archive/v0.60.tar.gz -O echo-nginx-module.tar.gz && \
mkdir echo-nginx-module && \
tar xf echo-nginx-module.tar.gz -C echo-nginx-module --strip-components=1
RUN wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz -O ngx_devel_kit.tar.gz && \
mkdir ngx_devel_kit && \
tar xf ngx_devel_kit.tar.gz -C ngx_devel_kit --strip-components=1
RUN wget https://github.com/openresty/set-misc-nginx-module/archive/v0.28.tar.gz -O set-misc-nginx-module.tar.gz && \
mkdir set-misc-nginx-module && \
tar xf set-misc-nginx-module.tar.gz -C set-misc-nginx-module --strip-components=1
RUN wget https://github.com/openresty/lua-nginx-module/archive/v0.9.15.tar.gz -O lua-nginx-module.tar.gz && \
mkdir lua-nginx-module && \
tar xf lua-nginx-module.tar.gz -C lua-nginx-module --strip-components=1
# Build Nginx
WORKDIR nginx
RUN ./configure --sbin-path=/usr/local/sbin \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--add-module=/tmp/echo-nginx-module \
--add-module=/tmp/ngx_devel_kit \
--add-module=/tmp/set-misc-nginx-module \
--add-module=/tmp/lua-nginx-module && \
make && \
make install
# Apply Nginx config
ADD config/nginx.conf /etc/nginx/conf.d/nginx.conf
ADD artifacts /usr/share/nginx/script/artifacts
# Expose ports
EXPOSE 8080
# Set default command
CMD ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/conf.d/nginx.conf" ]
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 8080;
server_name localhost;
root /usr/share/nginx;
error_log /dev/stdout debug;
access_log /dev/stdout;
location ~* ^/script/([^/]*?)/([^/]*?)$ {
set $jira $1;
set $filename $2;
if ($request_method != GET) {
return 404;
}
if ($jira !~ "JIRA-.*" ) {
echo "Invalid Jira number";
echo $jira;
return 404;
}
}
location /health {
return 200 'OK';
add_header Content-Type text/plain;
}
}
}