DockerでVPS上にgitlabとjenkinsサーバをたてる
はじめに
研究室で借りているさくらのVPSがあって、研究で使うアプリケーション以外にgitlabとかjenkinsを動かしている。Dockerをローカルでしか動かしたことが無かったので、リスクの低いこういうところで実際にDocker使ってみる。
これまでは AnsibleGalaxyで人気のRole を探して中身も読まずにインストールしちゃっていたけど、さっき触ってたらどうインストールされてるのか混乱したのでDockerで分離できたら良さそうっていうのが2つ目の理由。
準備
環境はさくらのVPSにCentOS 6が入ってます。 https://docs.docker.com/installation/centos/ を参考にDockerをインストール。
# yum update # cat >/etc/yum.repos.d/docker.repo <<-EOF [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF # yum -y install docker-io # service docker start
Gitlab
こちらのDockerイメージが人気なので使ってみる。
2015/11/26 追記
公式のDockerイメージありました...
追記終わり
MySQLとRedisもdockerで管理することにした。
$ docker pull sameersbn/mysql:latest $ docker pull sameersbn/redis:latest $ docker pull sameersbn/gitlab:latest
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE sameersbn/mysql latest 1aa894d249d8 23 hours ago 294.2 MB sameersbn/gitlab latest a87dce14c499 2 days ago 675.7 MB sameersbn/redis latest 9e62c2099db1 9 days ago 196.9 MB
MySQL、Redis、Gitlabのコンテナの立ち上げ。passwordのところは適当に置き換えて下さい。
$ docker run \ --name=mysql -d \ -e 'DB_NAME=gitlab_production' \ -e 'DB_USER=gitlab' \ -e 'DB_PASS=password' \ sameersbn/mysql:latest $ docker run \ --name=redis -d \ sameersbn/redis:latest $ docker run \ --name=gitlab -d -it -p 10022:22 -p 10080:80 \ -e 'GITLAB_SSH_PORT=10022' \ -e 'GITLAB_PORT=10080' \ -e 'DB_NAME=gitlab_production' \ -e 'DB_USER=gitlab' \ -e 'DB_PASS=password' \ -e 'GITLAB_SECRETS_DB_KEY_BASE=gacH4taC0ceJ7I' \ --link=mysql:mysql \ --link=redis:redisio \ -v $(which docker):/bin/docker sameersbn/gitlab:latest
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2198b686b6dc sameersbn/gitlab:latest "/sbin/entrypoint.sh 6 seconds ago Up 4 seconds 443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp gitlab 105589c338fb sameersbn/redis:latest "/sbin/entrypoint.sh 19 minutes ago Up 19 minutes 6379/tcp redis 52577c0c7aad sameersbn/mysql:latest "/sbin/entrypoint.sh 19 minutes ago Up 19 minutes 3306/tcp mysql
docker runのコマンドが長いのでdocker-compose使ったほうが良さそうだけど、今回はとりあえずこのままにしておく。
Jenkins
Jenkinsが公式にDocker imageを配布しているのでそれを使う。
https://hub.docker.com/_/jenkins/
$ docker pull jenkins
$ docker run \ --name jenkins -d \ -p 10081:8080 jenkins
アクセスして確認したら、ちゃんと動いてくれてました。手軽
おわりに
ポート番号指定するのはあれなのでnginxで gitlab.example.com
とか jenkins.example.com
とかにひも付けた。試してないけどこの辺は nginx-proxy 使ってもよさそう。
使いたいDocker Imageをyml形式で指定しておけば後は全部セットアップしてるAnsibleのRoleがあれば便利そう。無さそうだったら作ります。
- 作者: Lorin Hochstein,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/04/16
- メディア: 大型本
- この商品を含むブログ (2件) を見る