nginx
AmazonLinux
Docker

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はこちら

https://goo.gl/mfwppw


Macはこちら

https://goo.gl/t16nca


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!

Nginx.png


さいごに

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

思いついたら、ちょっとやってみようかと思います。