LoginSignup
14
15

More than 5 years have passed since last update.

ConohaのVPSにDocker+Gitlab7.6.1をインストールする

Last updated at Posted at 2014-12-27

Conohaの一か月無料期間を利用してGitlabを入れてみたい!と思ってインストールを試みたのですが、思いのほか苦戦したので記事にまとめてみることにしました。使用したOSはCentOS release 6.5 (Final)です。

インストールにあたって下記のサイトを参考にしました。
ありがとうございます。
公式ページ: sameersbn/docker-gitlab
Dockerを導入する(CentOS版)
Dockerチートシート
AmazonLinuxにGitLab構築してみる

間違いや改善案などがあったらご指摘いただけると幸いです。

やりたいこと

  • 既に出来上がってるgitlabのdockerイメージsameersbn/docker-gitlabを入れる
  • gitlabが送るメールをGmailで送るようにする
  • gitlabと他のwebサービスを分けたいため、http://gitlab.自分のドメイン/ という形でアクセスできるようにする(gitlabコンテナ内にあるnginxとdockerインストール前から存在しているnginxの両方があるという状態)

なお、2014/12/27時点で上記のイメージ内にある環境のバージョンは

GitLab 7.6.1
GitLab Shell 2.4.0
GitLab API v3
Ruby 2.1.5p273
Rails 4.1.1

という感じです。(gitlabのadmin画面を引用)

dockerをインストール

公式のインストール手順(http://docs.docker.com/installation/rhel/)でEPELリポジトリを導入しろと書いてあるのでそれに従います。

$ sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 update
$ sudo yum update
$ sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum -y install docker-io

dockerを起動!

$ sudo service docker start
$ sudo chkconfig docker on

最小限の設定でgitlabを動かす

公式のQuick Startに書かれているコマンドをそのまま打ってもDatabaseの設定が必要みたいなエラーを吐かれてしまう。。まず必要なものをpullします。

$ sudo docker pull sameersbn/gitlab:7.6.1
$ sudo docker pull sameersbn/mysql:latest
$ sudo docker pull sameersbn/redis:latest

MySQLとgitlabリポジトリのデータストアを作成

$ sudo mkdir -p /opt/gitlab/data
$ sudo mkdir -p /opt/mysql/data

MySQLを起動。-eオプションで環境設定ができます。また、-vオプションの/opt/mysql/dataと書いてある所でデータを保存する場所を指定できます。DB_PASSは、変えておいたほうが良さげでしょう。

$ sudo docker run --name=mysql -d \
  -e 'DB_NAME=gitlabhq_production' \
  -e 'DB_USER=gitlab' -e 'DB_PASS=任意のパスワード' \
  -v /opt/mysql/data:/var/lib/mysql \
  sameersbn/mysql:latest

Redisを起動。

$ sudo docker run --name=redis -d sameersbn/redis:latest

Gitlabを起動。

$ sudo docker run --name=gitlab -d \
  --link mysql:mysql \
  --link redis:redisio \
  -v /opt/gitlab/data:/home/git/data \
  -e 'DB_NAME=gitlabhq_production' \
  -e 'DB_USER=gitlab' -e 'DB_PASS=MySQLで設定したパスワード' \
  -e 'GITLAB_HOST=自分のホスト名' \
  -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \
  -p 10022:22 -p 10080:80 \
  sameersbn/gitlab:7.6.1

しばらく(最長3分くらい?)したらhttp://自分のホスト名:10080 にアクセスして、可愛くないキツネが現れたらひとまず成功です。

GitLabの設定

データの保存場所を変更する

https://help.conoha.jp/app/answers/detail/a_id/14436 に書いてあるようにConohaのディスクパーティションは初期設定の場合、基本ディスクに20GB割り当てられます。残りの80GB(100GBプランの場合)を読み書きするにはどうすればいいかというと/data以下を使ってやればいいのです。

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       18G  6.5G   10G  40% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/vda1             485M   55M  405M  12% /boot
/dev/vdb               79G  184M   75G   1% /data

そんなわけで/opt/gitlab/dataなんて所にデータを保存しておくともしかしたらディスクがいっぱいになる可能性があります。そんな時は先ほどのMySQLとGitlabリポジトリのデータをためる場所を変えてみましょう。なお、既にrunしているgitlabの設定を変更するには、gitlabコンテナをstopしてrmしてからrunします。

$ sudo mkdir -p /data/gitlab/data
$ sudo mkdir -p /data/mysql/data

$ sudo docker stop gitlab mysql
$ sudo docker rm gitlab mysql

$ sudo docker run --name=mysql -d \
  -e 'DB_NAME=gitlabhq_production' \
  -e 'DB_USER=gitlab' -e 'DB_PASS=任意のパスワード' \
  -v /data/mysql/data:/var/lib/mysql \
  sameersbn/mysql:latest

$ sudo docker run --name=gitlab -d \
  --link mysql:mysql \
  --link redis:redisio \
  -v /data/gitlab/data:/home/git/data \
  -e 'DB_NAME=gitlabhq_production' \
  -e 'DB_USER=gitlab' -e 'DB_PASS=MySQLで設定したパスワード' \
  -e 'GITLAB_HOST=gitlab.自分のホスト名' \
  -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \
  -p 10022:22 -p 10080:80 \
  sameersbn/gitlab:7.6.1

※[2015/1/2追記]GITLAB_PORTを設定してしまうと、例えばgitlabから送られるメールに記載されるURLにポート番号が入ってしまうのでポート番号を知られたくない場合は設定しなくていいみたいです。

GitLabからのメールをGmailに送らせる

SMTP_USER,SMTP_PASSを設定すればOKです。

$ sudo docker stop gitlab
$ sudo docker rm gitlab

$ sudo docker run --name=gitlab -d \
  --link mysql:mysql \
  --link redis:redisio \
  -v /data/gitlab/data:/home/git/data \
  -e 'DB_NAME=gitlabhq_production' \
  -e 'DB_USER=gitlab' -e 'DB_PASS=MySQLで設定したパスワード' \
  -e 'SMTP_USER=gitlabに使わせたいGmailアドレス' \
  -e 'SMTP_PASS=そのGmailアカウントのパスワード' \
  -e 'GITLAB_HOST=gitlab.自分のホスト名' \
  -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \
  -p 10022:22 -p 10080:80 \
  sameersbn/gitlab:7.6.1

nginxにリダイレクトさせる

nginxのconfファイルを編集。nginxの設定は/etc/nginx/nginx.confに加えて/etc/nginx/conf.d/以下にある.confファイルがすべて適用されます。ここでは新しく設定ファイルを作ることにします。(既にあるconfに追記しても◎)

sudo vim /etc/nginx/conf.d/gitlab.conf
/etc/nginx/conf.d/gitlab.conf
upstream gitlab_hostname {
    #hostnameに自分のホスト名を入れる
    server      gitlab.hostname:10080;
}

server {
    listen      80;
    #hostnameに自分のホスト名を入れる
    server_name gitlab.hostname;
    access_log  /var/log/nginx/gitlab.access.log    main;
    error_log   /var/log/nginx/gitlab.error.log;

    location / {
        proxy_pass  http://gitlab_hostname;
    }
}

※[2014/12/27]リダイレクト方式からリバースプロキシを使うやり方に修正しました。(Thanks! @kimama1997)

nginxを再起動します。

sudo service nginx restart

追記

この方法だとgitlabにアクセスしたときにURLにポート番号(:10080)が表示されてしまうのが心残りですね。自分なりにも、Gitlabコンテナにssh接続…dockerのイメージを直接書きかえ…など試みたのですが、前者はパスワードが分からない、後者はhttp://deeeet.com/writing/2013/12/16/where-are-docker-images-storede/に書いてあった場所にないじゃん!ってなって諦めました。そのうち探す予定。

14
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15