全体の流れはOSX上のdockerでCentOS 6.5にnginxを公式レポジトリからインストールするサンプル - Qiitaと同様です。
nginx + lua-nginx-moduleをビルドする部分はCent OS(6.4)にNginx + lua-nginx-moduleをインストール - エンジニアになりたいとMac OS X (10.8) での nginx + lua-nginx-module インストール - Qiitaを参考にしました。ありがとうございます。
Dockerfileは以下の通りです。luajitは/usr/local/luajit/, nginxは/usr/local/nginx/以下にインストールするようにしました。
FROM tianon/centos:6.5
MAINTAINER Hiroaki Nakamura <hnakamur@gmail.com>
RUN yum update -y
# install LuaJIT
RUN yum install -y curl tar make gcc && \
cd /usr/local/src && \
curl -O http://luajit.org/download/LuaJIT-2.0.2.tar.gz && \
tar xf LuaJIT-2.0.2.tar.gz && \
cd LuaJIT-2.0.2 && \
make && \
make PREFIX=/usr/local/luajit install
# install nginx with lua-nginx-module
RUN yum install -y git curl tar bzip2 make gcc-c++ zlib-devel && \
export LUAJIT_LIB=/usr/local/luajit/lib && \
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 && \
cd /usr/local/src && \
git clone git://github.com/simpl/ngx_devel_kit.git && \
git clone git://github.com/chaoslawful/lua-nginx-module.git && \
curl -LO http://downloads.sourceforge.net/project/pcre/pcre/8.34/pcre-8.34.tar.bz2 && \
tar xf pcre-8.34.tar.bz2 && \
curl -O http://nginx.org/download/nginx-1.4.6.tar.gz && \
tar xf nginx-1.4.6.tar.gz && \
cd nginx-1.4.6 && \
./configure --prefix=/usr/local/nginx \
--with-pcre=/usr/local/src/pcre-8.34 \
--add-module=/usr/local/src/ngx_devel_kit \
--add-module=/usr/local/src/lua-nginx-module \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" && \
make && \
make install
ADD nginx.conf /usr/local/nginx/conf/nginx.conf
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
DockerfileでADDしているnginx.confはソースパッケージのデフォルトの設定に以下の設定を追加したものになっています。
location /lua_test {
default_type 'text/plain';
content_by_lua "ngx.say('Hello, World!')";
}
差分は https://github.com/hnakamur/docker-nginx-lua/commit/3695996b8444540acfc998020a0ccf7b09dcf096#diff-1 を参照してください。
docker build -t hnakamur/nginx-lua .
でビルドして、
VBoxManage controlvm "boot2docker-vm" natpf1 "nginx,tcp,127.0.0.1,8080,,80"
でOSXのlocalhostの8080番ポートをVirtualBoxのboot2docker-vmの80番ポートにフォワードするように設定して、
docker run -d -p 80:80 hnakamur/nginx-lua
でdockerコンテナを起動します。
あとは、
curl http://localhost:8080/lua_test
でアクセスを試しHello, World!
と表示されることを確認できました。
nginxを起動せずbashを起動する手順
上記のDockerfileではENTRYPOINTではなくCMDでnginxを起動するようにしたので、以下のコマンドで起動すればnginxを起動する代わりにコンテナ内でbashを使えます。
docker run -i -t -p 80:80 hnakamur/nginx-lua /bin/bash