Bluemix 上に Redmine の Docker イメージをデプロイしてみた
今回は今までのエントリーとは少し違った変わり種です.
最近始めたチームプロジェクトを TiDD 風に進めたく、Redmine を運用することになりました.
Redmine をどこに構築するかいくつか選択肢がありましたが、せっかくなので Bluemix 上に構築することにしました.
今回は Bluemix 上に Redmine の Docker イメージをデプロイし、カスタムドメインで https 化するまでの流れをやってみます.
目次
前提
- macOS Sierra 10.12.5
- Bluemix CLI version 0.5.4+ae22935-2017-05-18T06:24:28+00:00
- Docker version 17.03.1-ce, build c6d412e
Docker のインストール
最初は Docker のインストールです.
(既に Docker をインストール済みの方は読み飛ばしていただいて構いません)
“Get Docker for Mac [Stable]” を選択し、Docker.dmg をダウンロードし、インストールします.
$ docker -v
Docker version 17.03.1-ce, build c6d412e
上記コマンドを実行し、バージョン情報が表示されていればインストール成功です.
Bluemix CLI とBluemix Container Service plug-in のインストール
Docker イメージのデプロイ先として、IBM Bluemix Container を用います.
Bluemix Container を利用するためには Bluemix CLI が必要なのでまずはこれをインストールしましょう.
上記リンクにアクセスし、CLI をダウンロードします.
Bluemix_CLI_0.5.4.pkg(Macの場合)を起動すると上記画面が表示されますので、手順に従ってインストールします.
$ bx -v
bx version 0.5.4+ae22935-2017-05-18T06:24:28+00:00
ターミナルで上記コマンドを実行してバージョン情報が表示されていればインストール成功です.
続いて Bluemix Container Service Container Service plug-in のインストールを行います.コマンドラインで以下に続くコマンドを実行してください.
$bx login -a https://api.ng.bluemix.net
Bluemix CLI にログインします.
$bx plugin install IBM-Containers -r Bluemix
$bx plugin list
インストール済みプラグインをリストしています...
プラグイン名 バージョン
IBM-Containers 1.0.0
インストール済みプラグインのリストに IBM-Containers が表示されていればインストール成功です.
Redmine の Docker イメージを Bluemix にデプロイする
まずは Docker を起動しましょう.
Launcher で Docker を選択します
ステータスバーの Docker 項目が Docker is running となっていれば起動成功です.
次に Bluemix にログインします.
$ bx login
API エンドポイント: https://api.ng.bluemix.net
Email> example@mail.com
Password>
認証中です...
OK
アカウントを選択します (または Enter キーを押してスキップします):
1. Daiki Kawanuma's Account (XXXXXXXXXXXXXXX)
Enter a number> 1
ターゲットのアカウント Daiki Kawanuma's Account (XXXXXXXXXXXXXXX)
ターゲットの組織 BlumixDev
ターゲットのスペース BluemixDev
API エンドポイント: https://api.ng.bluemix.net (API バージョン: 2.54.0)
地域: us-south
ユーザー: example@mail.com
アカウント: Daiki Kawanuma's Account (XXXXXXXXXXXXXXX)
組織: BlumixDev
スペース: BluemixDev
コマンドラインで bx login コマンドを実行してください.メールアドレスとパスワードを要求されます.正常にログインできれば上記のような結果が返ってくるはずです
Bluemix Container を初期化します.
$ bx ic init
古い構成ファイルを削除中です...
open /Users/DaikiKawanuma/.cf/config.json: no such file or directory
IBM Containers のクライアント証明書を生成中です...
クライアント証明書を /Users/DaikiKawanuma/.ice/certs/ に格納中です...
クライアント証明書を /Users/DaikiKawanuma/.ice/certs/containers-api.ng.bluemix.net/XXXXXXXXXX に格納中です...
OK
クライアント証明書が取得されました。
ローカルの Docker 構成を確認中です...
OK
ホスト名 registry.ng.bluemix.net のレジストリーで認証中
OK
コンテナーは IBM Containers レジストリーで認証されました。
プライベート Bluemix リポジトリーは URL registry.ng.bluemix.net/XXXXXXXXXX です。
IBM Containers と共に Docker CLI を使用するには、次の 2 つの方法から選択することができます。
オプション 1: このオプションでは、ローカル Docker ホストを管理するために Docker CLI を直接使用しながら、IBM Containers 上のコンテナーを管理するための「bluemix ic」を使用できます。
この Cloud Foundry IBM Containers プラグインは、ローカル Docker 環境に影響を与えることなく使用してください。
使用法の例:
bluemix ic ps
bluemix ic images
オプション 2: Docker CLI を直接使用します。 このシェルでは、これらの変数を設定することにより、ローカル Docker 環境をオーバーライドして IBM Containers に接続します。 以下のコマンドをコピーして貼り付けてください。
注: このオプションでサポートされるのは、後ろに (Docker) が付く Docker コマンドのみです。
export DOCKER_HOST=tcp://containers-api.ng.bluemix.net:8443
export DOCKER_CERT_PATH=/Users/DaikiKawanuma/.ice/certs/containers-api.ng.bluemix.net/XXXXXXXXXX
export DOCKER_TLS_VERIFY=1
使用法の例:
docker ps
docker images
コマンドラインで bx ic init コマンドを実行してください.
プライベート Bluemix リポジトリーは URL registry.ng.bluemix.net/XXXXXXXXXX です。
正常に初期化できた場合、上記のようにリポジトリーの URL が発行されますので、こちらを控えておきましょう.
Redmine の Docker イメージを pull します.
$ docker pull redmine
Using default tag: latest
latest: Pulling from library/redmine
10a267c67f42: Pull complete
0aaa89427703: Pull complete
4e4351445696: Pull complete
72c399ee88ad: Pull complete
cd4fc9895ed7: Pull complete
00facae99acf: Pull complete
39fe42e23efc: Pull complete
adcb64833163: Pull complete
605738c68599: Pull complete
eb8b57703d24: Pull complete
b0d2fec5a473: Pull complete
7bd6e321e449: Pull complete
509199c744bc: Pull complete
72bc2865edcf: Pull complete
89bcf430a558: Pull complete
Digest: sha256:6161e523b5a7d66eaa27c5e16eb62b327ea846f36e5b1f3d955bb333d631cec2
Status: Downloaded newer image for redmine:latest
コマンドラインで docker pull redmine コマンドを実行します.全ての項目が Pull complete になれば正常に pull できています.
Docker イメージにタグ付けを行います.
docker tag redmine registry.ng.bluemix.net/XXXX/my_redmine
コマンドラインで上記のコマンドを実行します.”XXXX” の部分には先ほど控えておいたレジストリの URL を指定します.”my_redmine” の部分は Bluemix 上の Docker イメージ名になりますのでお好きな名前を付けてください.
Bluemix 上に Redmine の Docker イメージをデプロイします.
$ docker push registry.ng.bluemix.net/XXXX/my_redmine
The push refers to a repository [registry.ng.bluemix.net/XXXX/my_redmine]
bbaad5f84f54: Pushed
8a2f78a107d8: Pushed
77e8840346cc: Pushed
dc33c98e0afc: Pushed
580223b85643: Pushed
912c9c81592d: Pushed
daf18abaed19: Pushed
4166db05041d: Pushed
fb1319c5dbe9: Pushed
f4d4ef112a81: Pushed
41636605749a: Pushed
c682b1980b3e: Pushed
8157cc9b225e: Pushed
2a9adabb6623: Pushed
8d4d1ab5ff74: Pushed
latest: digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX size: 3466
コマンドラインで docker push コマンドを実行します.push 以下の引数には先程タグ付けした値と同様のものを指定します.
なお、デプロイ中は Web 上で Bluemix にログインしないようにしましょう.途中でログインした場合、認証に失敗し最終的にデプロイが成功しません.
間違ってログインしてしまった場合でも、再度デプロイし直せば正常にデプロイできます.
カスタムドメインの指定と証明書の登録
いよいよ Bluemix 上で Redmine を起動するというところですが、その前にカスタムドメインと証明書の登録を行いましょう.
まずは証明書を作ります.今回は Redmine の運用が目的なので”オレオレ証明書”で良いことにします.
IBM Bluemix を独自ドメインで使う(SSL編) : まだプログラマーですが何か?
証明書については上記エントリーで解説されていますので、詳しく知りたい方はご覧ください.
証明書を作成します.
$ openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Hakozaki
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Project-Respite
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:*.project-respite.com
Email Address []:
***残りは全て Enter***
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
コマンドラインで openssl req -new -key server.key -out server.csr コマンドを実行します.いくつか回答項目が表示されますので、Email まで回答し、残りは全て Enter します.
openssl x509 -days 3653 -in server.csr -out server.crt -req -signkey server.key
Signature ok
subject=/C=JP/ST=Saitama/L=Urawa/O=Project-Respite/CN=*.project-respite.com
Getting Private key
更に上記のコマンドを実行すると、server.key, server.csr, server.crt が生成されているはずです.
ここまでで鍵生成は完了です.
次にカスタムドメインの登録を行います.
Bluemix にログインし、ページ右上のアカウントの項目で、”組織の管理”を選択します.
移動先のページにて、”組織の編集”を選択します.
タブ上の”ドメイン”の中の、”ドメインの追加”を選択します.ドメイン名を追加したら、下の保存を選択してください.
保存するとSSL証明書の欄のアイコンが変わると思いますので、こちらを選択します.
ポップアップ上で先程生成した Server.crt と Server.key を参照します.
最後にドメインサービスに Bluemix の CNAME を登録します.
こちらはお名前.comの例ですが、上記のように CNAME に “secure.us-south.bluemix.net” を指定してください.
これで下準備は完了です.
Redmine の起動
いよいよ Bluemix 上で Redmine を起動します.
トップ画面で上端タブの右にある”カタログ”を選択します.画面左端のすべてのカテゴリーから”アプリ”の中の”コンテナ”を選択します.コンテナの項目に先程デプロイした “my_redmine” を選択します.
コンテナ方式は”スケーラブル”を選択します(単一だとカスタムドメインを指定できないため).コンテナ名、サイズ、インスタンスはお好きなものを設定してください(今回は最小構成にしています).
ドメインにカスタムドメインを指定し、作成を選択すれば Redmine が起動されます.
起動画面はこんな感じです.メモリ使用量 365GBHour/Month までは無料枠で使えます.
まとめ
今回は Bluemix 上に Redmine の Docker イメージをデプロイし、起動してみました.
慣れれば10分!とまではいかないまでも、30分程度あればすぐに Redmine を構築できると思います.
少規模であれば無料枠で運用できると思いますので、ぜひお試しください.
以上です.
参考
ディスカッション
コメント一覧
まだ、コメントがありません