Casual Developers Notes

初級・中級のエンジニアやデザイナー向けに技術情報と英語学習情報を提供中。エンジニアもデザイナーも技術と英語を身に着けて海外に飛び立とう!

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • お問い合わせ
You are here: Home / 技術 Tips & Tutorials / GitHubとDockerHubを連携してDockerイメージを自動ビルドする方法(Automated Build)

2018年10月29日 By Keid Leave a Comment

GitHubとDockerHubを連携してDockerイメージを自動ビルドする方法(Automated Build)

GitHubとDockerHubを連携してDockerイメージを自動ビルドする方法(Automated Build)

Dockerを使ったアプリケーションが商用でも使われている昨今において、Dockerイメージを簡単に自動ビルドしたいという需要は高いです。さまざまなCIツール上からでもできるのですが、今回はDockerHubが提供しているAutomated Buildで実現する方法を紹介します。

見出し

  • 1 はじめに
  • 2 DockerHubでAutomated Buildを設定する
    • 2.1 前提
    • 2.2 DockerHubとGitHubと連携する
    • 2.3 DockerHubでAutomated Buildを作成する
    • 2.4 GitHubにDockerfileをPushする
    • 2.5 自動ビルドされたDockerイメージの動作確認
  • 3 おまけ(Webhook)
  • 4 最後に
  • 5 環境
    • 5.1 関連記事

はじめに

DockerHubにはAutomated Buildという機能があります。この機能を利用することで、GitHub上のリポジトリにPushするだけで、Dockerイメージを自動的にビルドすることができます。

それでは、やっていきましょう。

DockerHubでAutomated Buildを設定する

前提

  • GitHubのアカウントが作成してある
  • GitHub上でテスト用のリポジトリが作成してある(今回は例として「temporary_test」という名前で進めます)
  • DockerHubのアカウントが作成してある

DockerHubとGitHubと連携する

まずはAutomated Buildを実行できるようにするために、DockerHubからGitHubを連携させます。

DockerHubにログインし、「Create -> Create Automated Build」をクリックします。

NewImage

「Link Account」をクリックします。

NewImage

リンクできるGitホスティングサービスはGitHubとBitbucketがありますが、今回はGitHubを選択します。

NewImage

「Select」をクリックします。

NewImage

「Authorize docker」をクリックして、GitHubとDockerHubを連携します。

NewImage

GitHubのパスワードを入力して、「Confirm password」をクリックします。

NewImage

GitHubとDockerHubの連携が完了しました。

NewImage

DockerHubでAutomated Buildを作成する

それでは、Automated Buildを作成していきましょう。

「Create -> Create Automated Build」をクリックします。

NewImage

GitHubの「Create Auto-build」を選択します。

NewImage

今回テスト用にGitHub上に用意した「temporary_test」リポジトリを選択します。

NewImage

今回はデフォルトの設定で、「Create」をクリックします。この設定では、GitHub上のtemporary_testリポジトリのmasterブランチにPushするとDockerHub上でDockerイメージのビルドが自動的に行われます。

NewImage

Automated Buildが作成されました。

NewImage

「Build Details」にはまだビルドが無い状態です。

NewImage

GitHubにDockerfileをPushする

それでは設定したAutomated Buildが動くことを確認しましょう。

GitHubでテスト用に用意したtemporary_testリポジトリをクローンして、Dockerfileを追加し、GitHubにPushします。{your-github-account}は自分のDockerHubアカウントを指定してください。

$ git clone https://github.com/{your-github-account}/temporary_test.git
$ cd temporary_test
$ touch Dockerfile
$ echo "FROM nginx" > Dockerfile
$ cat Dockerfile
FROM nginx
$ git add .
$ git commit -m 'Add Dockerfile'
$ git push origin master

すると、DockerHub上でGitHubのPushをトリガーに、自動的にDockerイメージのビルドが実行されます。

NewImage

「Status」が「Success」になればビルドが完了です。

NewImage

自動ビルドされたDockerイメージの動作確認

最後に、自動ビルドされたイメージが動くことを確認しましょう。

DockerHubのtemporary_testのイメージをPullして実行してみましょう。{your-dockerhub-account}は自分のDockerHubアカウントを指定してください。

$ docker pull {your-dockerhub-account}/temporary_test:latest
$ docker images
REPOSITORY                                                      TAG                  IMAGE ID            CREATED             SIZE
{your-dockerhub-account}/temporary_test                                          latest               cd568529388a        17 hours ago        109MB
$ docker run -itd --rm --name web -p 8080:80 {your-dockerhub-account}/temporary_test:latest
$ docker container ls
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                  NAMES
371256aef1dc        {your-dockerhub-account}/temporary_test:latest   "nginx -g 'daemon of…"   15 seconds ago      Up 15 seconds       0.0.0.0:8080->80/tcp   web

ブラウザで「localhost:8080」を開いてみましょう。

NewImage

Nginxが正しく起動していることがわかります。正しく動いていますね。

おまけ(Webhook)

今回は行いませんでしたが、DockerHubの「Webhooks」タブからWebhookを設定できます。

NewImage

これを利用することで、Dockerイメージが自動ビルドされたタイミングで他のサービスに通知して連携できます。

最後に

いかがでしたか?これでGitHubにPushするだけでDockerHub上でDockerイメージを自動ビルドできるようになったと思います。とても便利ですね。では。

環境

  • git: git version 2.19.0
  • docker: Docker version 18.06.1-ce, build e68fc7a
The following two tabs change content below.
  • この記事を書いた人
  • 最新の記事
Keid
Twitter のプロフィール

Keid

カナダを拠点に活躍する(予定)デベロッパー。 大学でコンピュータサイエンスを真面目に学び、日本の大手IT企業に就職したまでは予定通りの人生だったが、日本のIT業界に失望したことで考え方が変わり、海外への挑戦を決意。海外に行きたくても英語ができなかっため、語学留学を経て強制的に英語を上達させ、カナダへの切符を手にした。このブログでは海外に挑戦したいエンジニアやデザイナーに少しでも有益な情報を提供していきたいと思う。(写真はラスベガス)
Keid
Twitter のプロフィール

最新記事 by Keid (全て見る)

  • 自作のNPMモジュールをsemantic-releaseを使って自動的にセマンティック・バージョニングで管理する方法 - 2019年2月15日
  • Go言語でさくっとREST APIを作ろう(Gorilla Mux編) - 2019年2月4日
  • MacBook ProでApp Storeのアプリをアップデートする際に「This item is temporarily unavailable」と怒られた場合の対処法 - 2019年2月1日

関連記事

  • UXデザイン初学者のための基本用語まとめ

    UXという言葉はだいぶ前からデザインの考え方として流行っています。ただ、本気で学ぼうと思うとどうしても情報は英語になるた…

  • [tips][perl] Perlで文字コードをいい感じに処理する方法

    日頃のつまらないルーチンワークは全てスクリプト化している俺です。スクリプトは動的言語であれば気楽にかけるので何でもよいの…

  • TumblrとWordPressのAMP設定方法とAMPエラーの対処方法

    TumblrでもWordPressでも、ブログを運営していると、ある日突然Google Search Console T…

  • Heroku上にNginxでリバースプロキシを構築する方法

    Heroku上にオリジナルのアプリケーションを構築したとして、それを公開するにはリバースプロキシを経由するのが一般的です…

  • Herokuの無料dynoをスリープさせないで24時間稼働させる4つの方法

    Herokuの無料のdynoを使っている場合、現時点のルールでは30分でスリープしてしまいます。スリープしてしまうと、ア…

カテゴリ : 技術 Tips & Tutorials タグ : automated-build, docker, dockerhub

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

技術力と英語力を向上させて
あたなを次のステージへ引き上げるための無料メルマガ

Sponsored Links

About Author

Keid

カナダを拠点に活躍する(予定)デベロッパー。 大学でコンピュータサイエンスを真面目に学び、日本の大手IT企業に就職したまでは予定通りの人生だったが、日本のIT業界に失望したことで考え方が変わり、海外への挑戦を決意。海外に行きたくても英語ができなかっため、語学留学を経て強制的に英語を上達させ、カナダへの切符を手にした。このブログでは海外に挑戦したいエンジニアやデザイナーに少しでも有益な情報を提供していきたいと思う。(写真は旅行で行ったラスベガス)

https://casualdevelopers.com/

最近の投稿

  • 自作のNPMモジュールをsemantic-releaseを使って自動的にセマンティック・バージョニングで管理する方法

    自作のNPMモジュールをsemantic-releaseを使って自動的にセマンティック・バージョニングで管理する方法

    2019年2月15日
  • Go言語でさくっとREST APIを作ろう(Gorilla Mux編)

    Go言語でさくっとREST APIを作ろう(Gorilla Mux編)

    2019年2月4日
  • MacBook ProでApp Storeのアプリをアップデートする際に「This item is temporarily unavailable」と怒られた場合の対処法

    MacBook ProでApp Storeのアプリをアップデートする際に「This item is temporarily unavailable」と怒られた場合の対処法

    2019年2月1日
  • Go言語のためのVisual Studio Codeの設定方法

    Go言語のためのVisual Studio Codeの設定方法

    2019年1月28日
  • reCAPTCHAをWordPressに導入してロボットによるスパムメールを防ぐ方法

    reCAPTCHAをWordPressに導入してロボットによるスパムメールを防ぐ方法

    2019年1月25日

カテゴリ

  • 技術 Tips & Tutorials (85)
  • 技術塾 (5)
  • ライフハック (25)
  • 海外留学 (11)
  • 英語学習 (3)
  • コラム (7)

アーカイブ

最高の学習のために

人気記事ランキング

  • MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
    MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
  • [tips][bat] バッチで明日の日付を計算する。
    [tips][bat] バッチで明日の日付を計算する。
  • [tips][Sublime Text] Sublime Text 3で文字化けしない方法
    [tips][Sublime Text] Sublime Text 3で文字化けしない方法
  • Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
    Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
  • [tips][perl] Perlで文字コードをいい感じに処理する方法
    [tips][perl] Perlで文字コードをいい感じに処理する方法
  • データサイエンスのためのAnaconda環境構築とTensorflowのインストール方法(Docker編)
    データサイエンスのためのAnaconda環境構築とTensorflowのインストール方法(Docker編)
  • SpringBootのProfile毎にプロパティを使い分ける3つの方法
    SpringBootのProfile毎にプロパティを使い分ける3つの方法
  • SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
    SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
  • Herokuの無料dynoをスリープさせないで24時間稼働させる4つの方法
    Herokuの無料dynoをスリープさせないで24時間稼働させる4つの方法
  • FacebookログインのJavascriptのSDKをサクッと試す方法
    FacebookログインのJavascriptのSDKをサクッと試す方法

Bitcoin寄付

Bitcoinを寄付しよう

BTC
Select Payment Method
Personal Info

Donation Total: BTC 0.0010

このブログの運営のためにBitcoinでの寄付を募集しています。お気持ち程度の寄付を頂けると管理者の励みになります。

Bitcoin寄付について知りたい方はこちらの記事へ

The following two tabs change content below.
  • この記事を書いた人
  • 最新の記事
Keid
Twitter のプロフィール

Keid

カナダを拠点に活躍する(予定)デベロッパー。 大学でコンピュータサイエンスを真面目に学び、日本の大手IT企業に就職したまでは予定通りの人生だったが、日本のIT業界に失望したことで考え方が変わり、海外への挑戦を決意。海外に行きたくても英語ができなかっため、語学留学を経て強制的に英語を上達させ、カナダへの切符を手にした。このブログでは海外に挑戦したいエンジニアやデザイナーに少しでも有益な情報を提供していきたいと思う。(写真はラスベガス)
Keid
Twitter のプロフィール

最新記事 by Keid (全て見る)

  • 自作のNPMモジュールをsemantic-releaseを使って自動的にセマンティック・バージョニングで管理する方法 - 2019年2月15日
  • Go言語でさくっとREST APIを作ろう(Gorilla Mux編) - 2019年2月4日
  • MacBook ProでApp Storeのアプリをアップデートする際に「This item is temporarily unavailable」と怒られた場合の対処法 - 2019年2月1日

関連記事

  • UXデザイン初学者のための基本用語まとめ

    UXという言葉はだいぶ前からデザインの考え方として流行っています。ただ、本気で学ぼうと思うとどうしても情報は英語になるた…

  • [tips][perl] Perlで文字コードをいい感じに処理する方法

    日頃のつまらないルーチンワークは全てスクリプト化している俺です。スクリプトは動的言語であれば気楽にかけるので何でもよいの…

  • TumblrとWordPressのAMP設定方法とAMPエラーの対処方法

    TumblrでもWordPressでも、ブログを運営していると、ある日突然Google Search Console T…

  • Heroku上にNginxでリバースプロキシを構築する方法

    Heroku上にオリジナルのアプリケーションを構築したとして、それを公開するにはリバースプロキシを経由するのが一般的です…

  • Herokuの無料dynoをスリープさせないで24時間稼働させる4つの方法

    Herokuの無料のdynoを使っている場合、現時点のルールでは30分でスリープしてしまいます。スリープしてしまうと、ア…

ビットコイン取引ならここ

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • サイトマップ
  • タグ一覧
  • プライバシーポリシー
  • お問い合わせ

Copyright © 2019 Keid - Casual Developers Notes