DockerHub + GitHub連携

Infrastructure as Codeを実現します。

GitHubでDockerfileを管理し、DockerHubにはその変更からコンテナイメージを作成してもらうことにします。

 

あらかじめDockerHubとGitHubのアカウントは作成済みであるとします。

 

DocherHubで連携設定

DokerHubにログインします。

右上のメニューから「Settings -> Linked Accounts & Services -> Link Github」を選択します。

 

注意事項を読んで問題なければPublic and Privateを選択します。

 

認証します。

 

連携の設定ができました。

 

GithubにDockerfileをpush

一旦Githubに移ります。

適当なDockerfileを作成します。

公式のDockerfileをちょっと改変しました。


# 公式 Python ランタイムを親イメージとして使用
FROM python:3.4.1

# /app ディレクトリを作成
RUN mkdir /app

# 作業ディレクトリを /app に設定
WORKDIR /app

# 現在のディレクトリの内容を、コンテナ内の /app にコピー
ADD . /app

# requirements.txt で指定された必要なパッケージを全てインストール
RUN pip install -r requirements.txt

# ポート 5000 番をコンテナの外の世界でも利用可能に
EXPOSE 5000

# 環境変数の定義
ENV NAME World

# コンテナ起動時に main.py を実行
CMD ["python", "/app/main.py"]

 

main.py、requirements.txtを作成します。

main.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
    def hello():
    return 'Hello, World!'

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

 

requirements.txt

Flask

 

これらのファイルが置いてあるディレクトリでイメージを作成します。

docker build -t flask .

 

早速実行しましょう。

Flaskでは5000番ポートをリッスンさせています。Dockerには5000番を開けるようにしています。

docker runコマンドでローカルの4000番をDockerの5000番にポートフォワードするようにオプションをつけます。

docker run -p 4000:5000 flask

 

ブラウザでhttp://localhost:4000/を開けば、「Hello, World!」と表示されます。

 

これでこの3つのファイル、Dockerfile、main.py、requirements.txtがちゃんと動くDockerを作成することが保証されました。

 

ではGithubにリポジトリを作成し、この3ファイルをpushしましょう。

 

Docker HubとGithubを連携

再びDocker Hubに戻ります。

メニューから「Create -> Create Automated Build -> Github」を選択します。

 

先ほど作成したリポジトリを選択します。

 

適当な名前とディスクリプションをつけて作成します。

 

できました。

publicで作ったので、flaskのDockerイメージが欲しい方はご自由にお使いください。

 

これでGithubに変更があった場合は自動でDocker Hub上のイメージも更新されるはず。

 

Githubに変更をpush

Githubに変更をpushするとすぐにDocker Hubがそれを認識し、イメージを更新します。

 

以下は更新中。数分ぐらいかかります。

 

更新成功画面。

コメントを残す