Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

Elastic Beanstalk にDockerfileだけで、サンプルアプリをdeployする方法

参考サイト

docs.aws.amazon.com

やってみたこと

AWSの参考ファイルのDockerfileを、作成して、eb create、eb initするだけでサンプルアプリができた、すごいね(^ ^;)

  • Dockerfileを作成する
FROM ubuntu:12.04

RUN apt-get update
RUN apt-get install -y nginx zip curl

RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip

EXPOSE 80

CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
  • Dockerfileを適当なフォルダに配置する。
test2048
 - Dockerfile
  • ElasticBeanstalkでデプロイしてみる。
$ cd test2048
$ eb init
$ eb create

できた〜〜〜!すげーなw

Dockerfileの読解

# ubuntuイメージ
FROM ubuntu:12.04

# apt-getで、nginx, zip, curlをゲットする。
RUN apt-get update
RUN apt-get install -y nginx zip curl

# apt-getしてできた、nginx.confに、daemon offを書き込む
RUN echo "daemon off;" >> /etc/nginx/nginx.conf

# curl = cURLらしい。-o  オプションは、保存。-L  は、--locationの略で、要求したページが別の所在に移動していた場合に(サーバからの Location: ヘッダ行と 3XX 応答コードで検知されます)、このオプションにより,新しい所在に対して要求を再試行するようになります。
RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master

# master.zipを解凍して、2048-master以下のファイルを、[.]現在のフォルダ(www/以下)に移動させる。2048-master master.zipは削除する。
RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip

# コンテナ側の80portを解放する
EXPOSE 80

# CMDは、構築時には何もしないが、コンテナ実行時の挙動を指定できる
# ここでは、/usr/sbin/nginxを、 -c(--conf-path)で、/etc/nginx/nginx.confを指定して実行している。
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]

あとは、2048の解説だけど、これは次の記事で検証してみるか。