A Rate-Limiting HTTP Proxy(7)Docker and Deployment

A Rate-Limiting HTTP Proxy(7)Docker and Deployment

We plan to use sudo to run the command to start the nginx on port 80, we need to link the command first
>sudo ln -s /opt/openresty/nginx/sbin/nginx /usr/local/sbin/nginx

On MAC it works well, on RaspberryPI, it has this exception while running it
>sudo nginx -p /opt/luaweb/dist/app -c conf/nginx.conf
nginx: [emerg] getgrnam("owner") failed in /opt/luaweb/dist/app/conf/nginx.conf:1

Solution:
I change the nginx.conf and get rid of owner, it works.

After install the things, the URL for luarocks is as follow:
/tool/luarocks/lib/luarocks/rocks

The Makefile will build the binary and prepare the ENV.
IMAGE=sillycat/public
TAG=raspberrypi-openresty
NAME=raspberrypi-openresty

app-init:
rm -fr install
mkdir install
wget https://openresty.org/download/openresty-1.11.2.3.tar.gz -P install/
wget http://luarocks.github.io/luarocks/releases/luarocks-2.4.2.tar.gz -P install/

app-build:
./package.sh
tar -cvzf ./dist/$(NAME)-1.0.tgz ./luaweb-1.0

docker-context:

build: docker-context
docker build -t $(IMAGE):$(TAG) .

run:
docker run -d -p 80:80 --name $(NAME) $(IMAGE):$(TAG)

debug:
docker run -ti -p 80:80 --name $(NAME) $(IMAGE):$(TAG) /bin/bash

clean:
docker stop ${NAME}
docker rm ${NAME}

logs:
docker logs ${NAME}

publish:
docker push ${IMAGE}:${TAG}

fetch:
docker pull ${IMAGE}:${TAG}

And package.sh will help to binary the lua scripts
#!/usr/bin/env bash

rm -rf ./luaweb-1.0
mkdir -p luaweb-1.0/logs
mkdir -p luaweb-1.0/conf
cp -rf conf/nginx-prod.conf luaweb-1.0/conf/nginx.conf
cp -rf html luaweb-1.0
cp -rf lua luaweb-1.0
cp -rf lualib luaweb-1.0

luajit=/opt/openresty/luajit/bin/luajit

function compile() {
    for file in $1
    do
        if test -f $file
        then
            $luajit -b $file $file
        fi
    done
}

compile "./luaweb-1.0/lua/web/*"
compile "./luaweb-1.0/lua/*"

Dockerfile will describe all the steps to set up image
#Set up nginx in Docker

#Prepre the OS
FROM resin/rpi-raspbian:jessie
MAINTAINER Carl Luo <[email protected]>

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get -y update
RUN apt-get install -y apt-utils
RUN apt-get -y dist-upgrade
RUN apt-get install -y build-essential gcc make
RUN apt-get install -y libpcre3 libpcre3-dev zlib1g-dev libgcrypt11-dev
RUN apt-get install -y libssl-dev wget unzip

#install
RUN     mkdir -p /tool
RUN     mkdir -p /install

#install openresty
ADDinstall/openresty-1.11.2.3.tar.gz /install/
WORKDIR /install/openresty-1.11.2.3
RUN./configure --prefix=/tool/openresty
RUN     make
RUN     make install

#install luarocks
ADDinstall/luarocks-2.4.2.tar.gz /install/
WORKDIR /install/luarocks-2.4.2
RUN./configure --with-lua="/tool/openresty/luajit" --lua-suffix="jit" --with-lua-include="/tool/openresty/luajit/include/luajit-2.1"
RUNmake build
RUNmake install

#install dependencies
RUNluarocks install md5

#install app
RUNmkdir -p /share/
ADDdist/raspberrypi-openresty-1.0.tgz /share/

#start the application
EXPOSE  80
RUN     mkdir -p /app/
ADD     start.sh /app/
WORKDIR /app/
CMD[ "./start.sh" ]

RUN ln -sf /dev/stdout /share/luaweb-1.0/logs/access.log
RUN ln -sf /dev/stderr /share/luaweb-1.0/logs/error.log

start.sh is the trigger to start the nginx service
#!/bin/sh -ex

cd /share/luaweb-1.0
/tool/openresty/nginx/sbin/nginx -p /share/luaweb-1.0 -c /share/luaweb-1.0/conf/nginx.conf -g "daemon off;"


References:
Previous Note
http://sillycat.iteye.com/blog/2374164
http://sillycat.iteye.com/blog/2374929
http://sillycat.iteye.com/blog/2374930
http://sillycat.iteye.com/blog/2375094
http://sillycat.iteye.com/blog/2375230
http://sillycat.iteye.com/blog/2376670

http://www.ulos.pl/-configure-error-ssl-modules-require-the-openssl-library
https://serverfault.com/questions/657863/nginx-how-to-use-docker-log-collector-when-nginx-is-running-under-supervisord

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326414617&siteId=291194637