Elastic Beanstalk + 単一Containerの場合の構成や、ECRについて
- Elastic Beanstalk + 単一Containerの場合は、EC2-Dockerに対して、Container x1個が基本になると思われる。 なので、1つのContainerに、nginx,uWSGI,Djangoが搭載されると思われる。 多分設定で複数containerの構成にすることもできるぽいけど、それだったらマルチコンテナ使った方がやりやすいのかもしれない。
それは以下のサイトあたりを参考にすると良さそうだなぁと思った。
Amazon EC2 Container Registry(ECR)の使いどころについて Amazon EC2 Container Registry(ECR)は、めっちゃ便利そうな気がする。 DockerレジストリがEC2上にあるという感覚だと思うんだけど、これがあれば公開したくないprivateなimageとかもここに保存しておけるなぁ。
Dockerfileについて
以下のようにgit hubなどに預けたファイルをそのまま持ってきてデプロイするというdocker imageを作るのはわかりやすくていいかもしれない。
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で作るimageをECRに保存しておいて、それを呼び出すだけのDockerfileを作っておけばそれだけでデプロイできるんじゃないかなぁ。
FROM xxxx/xxxx:xxxx
とかだけ書いておくとか。
* githubにdjangoコードをあげる
* そのコードを上記のDockerfileのようにダウンロードして、展開して、デーモン実行するDocker imageを作成する。(ONBUILDとか使っても面白いかもしれん。)
* そのimageをECRに登録する。
* ECRからimageを読み込むだけのDockerfileを作成する。
* それをeb deployする。
明日はそれを試してみよう。