Jenkinsとかその手のツールをまともに使ったことない僕ですが、CI環境をお手軽に構築して使ってみたい欲望が高まってきたので、マイナーではありますが、以前ちょっとかじったGitLab CIをDockerを使って構築してみたいと思います。ちなみにGitLab CIって知名度激低ですかね???
GitLab CI公式
https://about.gitlab.com/gitlab-ci/
ちなみにGitLabのバージョン7以前はGitLabのインストールまではそれほど苦労しないのですが、GitLab CIまでやろうとすると色々と苦労しました。今回はCI環境が統合されたバージョン8以降でDockerを使って構築することで、楽に構築することを目指します。
Dockerのインストールについてはこちらを参考ください。
AWS/EC2にCentOS7を入れてDockerホストを作成 その1
http://qiita.com/ABE_TAKASHI/items/2b04cf4c70f28b864134
2016/11/11追記
Docker + nginx-proxy でGitLab環境(Let's Encrypt付き)を構築する
http://qiita.com/ABE_TAKASHI/items/654ef6ed22071c93d6f2
という記事を新たに書いたので、こちらの投稿と合わせてご覧ください。
nginx-proxy を立てる
GitLabを立てる場合、いちいちよく分からないポート番号を指定してWEBページにアクセスしたりするのがいやなので、nginx-proxy を立ててサブドメインとか使ってスマートにアクセスできるようにします。
nginx-proxyはnginxコンテナとdocker-genコンテナの二つを立てて運用しますので、docker-composeでまとめて管理するようにします。
(参考)
Docker + nginx-proxy + PHP7 on Apache + MySQL5.7 で WordPress の環境を作る その1
http://qiita.com/ABE_TAKASHI/items/f0cd899fd7ac2cc9b5a0
前に書いたこの投稿では二つのコンテナを別々に立ち上げましたが、今回やろうとしていることも、docker-composeを使う以外はほぼ同じになります。
設定ファイルを置く任意のディレクトリ(/var/docker/nginx)を作成し、その中に移動します。さらにnginx-proxyのテンプレートファイルを置くディレクトリ(/var/docker/nginx/templates)を作成して、テンプレートファイルをダウンロードしてきます。
[docker-op@docker-base ~]$ mkdir -p /var/docker/nginx && cd /var/docker/nginx
[docker-op@docker-base nginx]$ mkdir templates && cd templates
[docker-op@docker-base template]$ curl -o nginx.tmpl https://raw.githubusercontent.com/jwilder/docker-gen/master/templates/nginx.tmpl
(出力略)
[docker-op@docker-base template]$ cd ..
そして、nginxコンテナとdocker-genコンテナをセットにしたdocker-compose.ymlファイルを作成します。
[docker-op@docker-base nginx]$ vi docker-compose.yml
nginx:
image: nginx:latest
container_name: nginx
volumes:
- /tmp/nginx:/etc/nginx/conf.d
ports:
- "80:80"
docker-gen:
image: jwilder/docker-gen:latest
container_name: docker-gen
volumes_from:
- nginx
volumes:
- /var/run/docker.sock:/tmp/docker.sock
- /var/docker/nginx/templates:/etc/docker-gen/templates
links :
- nginx
command: "-notify-sighup nginx -watch --only-published /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf"
あとは、docker-composeコマンドでnginxとdocker-genの2コンテナを立ち上げます。確認すると2つのコンテナが立ち上がっていることが確認できます。
[docker-op@docker-base nginx]$ docker-compose up -d
[docker-op@docker-base nginx]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
60900fa566ee jwilder/docker-gen:latest "/usr/local/bin/docke" 17 minutes ago Up 17 minutes docker-gen
83fbebe4d069 nginx:latest "nginx -g 'daemon off" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp, 443/tcp nginx
長くなりますので、次に続きます。
Docker + nginx-proxyでGitLab CI環境を作ってみる(2)
http://qiita.com/ABE_TAKASHI/items/deb516d44459eb901961