Djangoroidの奮闘記

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

Heroku Docker Container Registry and Runtime のサンプルコードの読解

概要

Dockerfileからdocker imageをbuildして、herokuにdeployできる、Container Registry and Runtimeを使ってみる。 当方、dockerについては、ほとんど何も知らない素人なので、dockerについても色々推察しながら進めて見ます。

参照

qiita.com

devcenter.heroku.com

qiita.com

Dockerfileを読解してみる。

チュートリアルでやった、dockerfileを読解してみる。

#Grab the latest alpine image
FROM alpine:latest # FROM = ベースイメージの指定 ここでは、alpine(linux)のlatest tagのイメージを指定している。

# Install python and pip
RUN apk add --update python py-pip bash # RUN=コマンドの実行 apk add は、多分、yum, apt-getと似たようなalpineのコマンド。なのでここは、ベースイメージによってコマンドが変わるはず
ADD ./webapp/requirements.txt /tmp/requirements.txt # ADD = ファイル/ディレクトリの追加 ここでは、localにある requirements.txtを、container内に、tmp/requirements.txt というファイルとフォルダを作って、そこに保存している。

# Install dependencies
RUN pip install -qr /tmp/requirements.txt # RUN=コマンドの実行 さっき作成してrequirements.txtを元にpip installする。-qrのオプションは、不明。

# Add our code
ADD ./webapp /opt/webapp/ #ADD = ファイル/ディレクトリの追加 ./webappのフォルダの内容を container内の/opt/webapp/ に移す。ここもoptはちょっとよくわからないけど、webappは任意の名前のため、アプリによって異なる。
WORKDIR /opt/webapp # WORKDIR = 作業ディレクトリの指定をする。ようは、cd みたいなもののようです。

# Expose is NOT supported by Heroku
# EXPOSE 5000

# Run the image as a non-root user
RUN adduser -D myuser # add user コマンドを使って、userを追加しているようです。
USER myuser # containerで作業するuserを指定するコマンド

# Run the app.  CMD is required to run on Heroku
# $PORT is set by Heroku
CMD gunicorn --bind 0.0.0.0:$PORT wsgi # CMD=docker run の時に実行されるコマンドのようです。heroku/pythonではgunicornを使っているので、こんな感じのようです。

かなりシンプルな例なので、すぐには使えそうにないですが、直感的にわかりやすいところもありますね。僕の場合、docker自体使ったことないので、dockerの動作をイメージしづらいですが、それでも何回かやってればdeployに使えそうな気がします。