Heroku Docker Container Registry and Runtime のサンプルコードの読解
概要
Dockerfileからdocker imageをbuildして、herokuにdeployできる、Container Registry and Runtimeを使ってみる。 当方、dockerについては、ほとんど何も知らない素人なので、dockerについても色々推察しながら進めて見ます。
参照
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に使えそうな気がします。