githubライクなツールgitbucketをdockerで起動する

gitbucketがあまりにもgithubすぎてもう手放せない

githubはプライベートで運用しようとすると、お金が必要になっちゃいます。
本格的に事業で使うなら、その対価を考えると、githubが良いのでしょうけれども、個人で遊ぶにはちと辛い。

そこで、githubで活躍できるようになるよう、プライベートgithubのgitbucketでめいいっぱい練習しましょう!
という事で、前置きはこれくらいにして、以下のコマンドを実行すると動きます。

dockerホストの /pathto/gitbucket-data ディレクトリに永続化データが保存されます。
※ pathtoの所は保存したいディレクトリを事前に作っておくなりしてください。

WEBのアクセスは http://YOURHOST:8080/ でID/PASSはroot/rootとなります。

初めはアカウントの作成を行いましょう!
29418はsshでのgit利用になります。

画面は本当にgithubそっくりなんです!pull requestもWEB-UIからできちゃってホントコレいいわぁw

前回 gitprep を紹介させてもらいましたが、動作の軽さ手軽さではgitprep、githubにより近いのはgitbucketという感じで使い分けるのもありかもしれません。

gitの使い方はこちら(サルでもわかるGit入門)が大変わかりやすく説明されておられます。


Dockerプライベートレジストリー構築(その2)

前回は、regitryサーバをv2.0で作成しましたが、その後、WEB-UIツールとの連携で躓いたので、今回はregistry v1.0(latest)版で、registry-frontend と連携してみようと思います。

概要

  1. 永続化のためのディレクトリを作成する
  2. docker registryをrunする
  3. docker registry-frontendをrunする
  4. ブラウザで確認する

詳細

  1. 永続化のためのディレクトリを作成する
    ホストで永続化の為、以下のディレクトリを作成しておく。
  2. docker registryをrunする
  3. デフォルトのコンフィグをそのまま使います。あと、永続化の為コンテナの/registryを先程作ったディレクトリにVOLUME設定します。

  4. docker registry-frontendをrunする
    linkの指定が重要ですね!registryのnameで指定した文字列そっくりそのままでないとダメです。あと、永続化の為に、先程作成したディレクトリとコンテナの/var/lib/h2とをVOLUME設定しておく必要があります。ブラウザで接続するポート番号を、3080番に変更しております。
    ※起動までちょっと時間がかかります。。。
  5. ブラウザで確認する
    http://SERVER:3080/ としてアクセスする。
    frontend

    frontend2

docker本もだいぶ出そろってきたので、1冊位は手元にあってもいいかもですね~


Dockerプライベートレジストリー構築

概要

docerkのimageをprivateに蓄えておくregistryという、dockerを利用してみます。
以降の作業は全部ホスト側で実施します。
registry-frontendを用いたWEB-UI利用なら、こちらを見てくださいねd(^ー゜*)

準備

ホストサーバのホスト名 : server
利用するdockerコンテナ: registry:2.0

registryに登録するrepositoryを永続化したいので、ホストにボリュームを用意する。

https通信用に証明書を作製しておく

※ココで、Common Nameですが、registryのコンテナを実行するホストへのアクセスに影響しますので、ここ重要かも。

出来た公開鍵をregistryにアクセスするホストに登録する

※この/etc/docker/certs.d/ ホルダを作製してca.crtを設置すると、既存のdocker registryへのhttpsアクセスに仕様するための公開鍵 ca-bundle.crtが使われなくなっちゃうみたいで、とりあえず symlink貼っとくのがいいみたい。

registryに接続する側でregistryへのアクセスについて自己証明書のチェックをすっ飛ばしてつなげるようにしておく

※centosの場合は、 /etc/sysconfig/docker になります。

registryサーバを起動する

registryサーバはv2.0を使います。

push/pull

ubuntuのイメージをpushしてみる

※serverの所は、registryコンテナが起動しているホストを指定する

docker本もだいぶ出そろってきたので、1冊位は手元にあってもいいかもですね~


Dockerで複数プロセスを扱う場合

Docker入門 Immutable Infrastructureを実現するを読んでおくと、理解が早いかもしれません。電子書籍だとタブレット一つで沢山持ち歩けるので便利ですよねd(^ー゜*)

概要

ココでは、ubuntu で、supervisorを用いて、nginx + php-fpm + postgersql を一つのdockerコンテナで、起動する方法を残します。ついでにsshでログインできるようにもしておきます。
Postgresqlは、imageを作成する際には、/var/share/pgsqlがVOLUMEマウントされていない状態なので、あえてここでDBの初期化等行っていません。HOST上の(永続化データ)を復元してから起動する想定になっています。
なので、事前にpostgresql9.3のDBをどちらかで作成してHOST側で /data/docker-share/webapp/pgsql 以下に配備しなければ、このコンテナを起動した際に、コンテナにsshして、supervisorctl status するとpostgresqlがFAILDとなっています。

この辺り、運用との絡みも出てくるので、ココでは触れません。
postgresqlのユーザIDは、apt-get install する際に100から順にインクリメントされた値となるようで、HOST側でchownしてもダメかも。また、Dockerfileではまだマウントされていないので、chownできない。
まだまだ、課題がのこっていそう。

環境

項目 内容
OS Ubuntu 14.04.3 LTS
middle ware nginx/1.4.6 (Ubuntu)
PHP 5.5.9-1ubuntu4.11
postgres (PostgreSQL) 9.3.9
ssh
docker version 1.5.0
ボリューム共有 HOST: /data/docker-share/webapp/
DOCKER: /var/share/

ファイル構成

 ./

  • Dockerfile
  • setfiles/
    • default
    • fastcgi.conf
    • supervisor/
      • cron.conf
      • nginx.conf
      • pgsql.conf
      • php.conf
      • ssh.conf

 

手順概要

  1. Dockerfileを作成する
  2. nginxの設定ファイルを作成する
  3. php-fpmの設定ファイルを作成する
  4. nginxのsupervisorのconfファイルを作成する
  5. cronのsupervisorのconfファイルを作成する
  6. php-fpmのsupervisorのconfファイルを作成する
  7. postgresqlのsupervisorのconfファイルを作成する
  8. sshのsupervisorのconfファイルを作成する
  9. docker buildする
  10. docker run して確認する

詳細手順

  1. Dockerfileを作成する
  2. nginxの設定ファイルを作成する
  3. php-fpmの設定ファイルを作成する
  4. nginxのsupervisorのconfファイルを作成する
  5. cronのsupervisorのconfファイルを作成する
  6. php-fpmのsupervisorのconfファイルを作成する
  7. postgresqlのsupervisorのconfファイルを作成する
  8. sshのsupervisorのconfファイルを作成する
  9. docker buildする
  10. htmlファイルが無ければ

    postgresql9.3のデータベースのバックアップを戻しておく

  11. docker run して確認する

雑記

「君は「これまで」と「これから」を心配しすぎなんです。
言うでしょう?
昨日とは過去のもの、
明日とは未知のもの、
今日の日はもうけもの。
それは天の贈り物。」
@カンフーパンダ ウーグウェイ導師

The clock is running. Make the most of today.
Time waits for no man.
Yesterday is history.
Tomorrow is a mystery.
Today is a gift.
That’s why it is called the present.
@Alice Morse Earle 「Sun Dials and Roses of Yesterday: Garden Delights.」


RHEL6.5(RedHat Enterprise Linux 6.5)にAnsibleでDockerをインストールする

RHEL6.5にAnsibleでDocker環境つくっちゃおう♪

docker上に作ったansibleなサーバからvmhostのRHEL6.5にdocker環境を作ってしまいます。

入門Ansibleとか、Docker入門 Immutable Infrastructureを実現するを読んでおくと、理解が早いかもしれません。電子書籍だとタブレット一つで沢山持ち歩けるので便利ですよねd(^ー゜*)

今回は、ansibleな環境をdocker上に作ってしまったため、sshのノンパスキーが旨く作れなかったので、パスワード認証にしちゃいました・・・(作れたけど起動し直すたびにホスト名変わりますよね。id_dsa.pubファイルの最後にアカウント@ホスト名みたいなのが付くんだけど、これが為に恒久的でなはいというか。)

1. inventoryなホストファイルを作成

serversな識別に、たくさんのサーバをぶら下げる想定です!

インストール先のvmhostのデフォルト環境をpackerでvagrantのbox作っちゃったりした後の想定です。
sudouserがsudopasswordというパスワードで存在することにしてください。
また、一度sshで接続して、known_hostsに登録されているようにしてください・・・(注文が多くてすみません)

/etc/ansible/hosts

2. playbookファイルを作成

えーと、sed -i -e の所! lineinfileというモジュールがあるので、置き換えてください。。。

コレ!公式ドキュメント読むと update なのか例にあるupgradeなのかわかんなくなるよ。

subscription-managerもモジュールになってるんだけど、まだバギーらしい。登録するuserとpasswordは適宜環境に合わせて修正してね。

device-mapperのパッケージだけど、前回使ってたのが 404 not found になってて、どうやらバージョンアップしたらしい。直接指定だから難しいけど、state=latest な感じにできればいいな。yumのパッケージのバージョンが上がればこんな無茶はいらないんだけどなぁ~

proxyは環境に合わせて不要なら外してね。
IPADDRESSって書いている所は適宜編集してね。

3. 流し込み!

インストール先のホストの/var/log/messagesにも、実行されたコマンドが出力されるので、実行側の結果と照らし合わせてみると進行状況とか良くわかっていいかもです。
・・・が、Ansible使うんだし、インストール先にログインしちゃダメですかねwww
ひな形作る、try&errorの時だけにしますね(ノ∀`*)