使用OSX的Docker,在CentOS 6.5上构建nginx + lua-nginx-module的示例
整个过程与在OSX上使用docker在CentOS 6.5上从官方存储库安装nginx的Qiita示例相同。
我使用CentOS(6.4)作为参考,在CentOS上安装了Nginx + lua-nginx-module以及在Mac OS X(10.8)上安装了nginx + lua-nginx-module的过程,非常感谢。
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中使用的是CMD而不是ENTRYPOINT来启动nginx,所以只需要使用以下命令来启动,就可以在容器内使用bash,而不是启动nginx。
docker run -i -t -p 80:80 hnakamur/nginx-lua /bin/bash