17
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OSXのdockerを使ってCentOS 6.5でnginx + lua-nginx-moduleをビルドするサンプル

Last updated at Posted at 2014-03-04

全体の流れは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/以下にインストールするようにしました。

https://github.com/hnakamur/docker-nginx-lua/blob/d450a41fb0160b206532a84566d2857870ca998d/Dockerfile
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はソースパッケージのデフォルトの設定に以下の設定を追加したものになっています。

https://github.com/hnakamur/docker-nginx-lua/blob/3695996b8444540acfc998020a0ccf7b09dcf096/nginx.conf#L48-L51
        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
17
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?