DockerにAmazon Linuxを入れて、Nginxが動くようにする


はじめに

特に意味はないのですが、AWS Lambdaを作るための環境の一つとして、Dockerを選んでみました。
ということで、Dockerfileを作ってみようと思ったのですが、関係はないのですが、Nginxを入れて、
動いてるのを確かめたい欲求に駆られたのでやってみました。

環境を作る

動作環境

  • MacBook Pro(13-inch, 2016, Four Thunderbolt 3 Ports)
  • macOS High Sierra 10.13.5

Dockerをインストール

Windowsはこちら

Macはこちら

Dockerfile

こんな感じで書いてみました。

FROM amazonlinux:2017.12.0.20180330
# install packages
RUN yum -y update && yum clean all && \
    yum -y install \
    wget \
    git \
    awscli \
    openssh \
    openssh-server \
    tar \
    gcc \
    make \
    zlib-devel \
    openssl-devel \
    which \
    zip \
    unzip \
    glibc-langpack-ja

# set timezone
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# install python 3.6.6
ENV HOME /root
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/bin:$PATH
RUN git clone https://github.com/yyuu/pyenv.git $HOME/.pyenv
RUN echo 'eval "$(pyenv init -)"' >> ~/.bashrc && \
    eval "$(pyenv init -)"
RUN pyenv install 3.6.6 && \
    pyenv global 3.6.6

# install nginx
RUN yum install -y http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y --enablerepo=nginx nginx
RUN yum swap -y fakesystemd systemd && yum clean all
#RUN service nginx restart
RUN systemctl enable nginx
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]
EXPOSE 80
# set LANG
ENV LANG ja_JP.UTF-8

実行する

ビルドしてから、実行する感じになります。
コマンドはこちら

$ docker build -t testimage
$ docker run -d -it -p 8080:80 testimage

testimage は適当な文字を入れてもらってOKです。
※ 今回の例は、Docker側は80ポート、動作させてるOS側は8080ポートを使っています。8080はぶつからないポートにすればOKです。

確認する

ブラウザを立ち上げて、以下のURLを入れてください。
http://localhost:8080

以下の図のようになればOK!

さいごに

結構簡単に作れたので、この前段にロードバランサーを置いて分散させたり、いろんなもので制御したりしてみても面白いかもですね。
思いついたら、ちょっとやってみようかと思います。