Djangoroidの奮闘記

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

Elastic Beanstalk + 単一Containerの場合の構成や、ECRについて

  • Elastic Beanstalk + 単一Containerの場合は、EC2-Dockerに対して、Container x1個が基本になると思われる。 なので、1つのContainerに、nginx,uWSGI,Djangoが搭載されると思われる。 多分設定で複数containerの構成にすることもできるぽいけど、それだったらマルチコンテナ使った方がやりやすいのかもしれない。

それは以下のサイトあたりを参考にすると良さそうだなぁと思った。

qiita.com

  • 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する。

明日はそれを試してみよう。