Docker-composeでGitLabを構築、GitLabRunnerのセットアップ

CentOS

2019/04/04現在の情報

この記事では、Docker-composeでGitlabを構築する方法を紹介します。

環境

実機のOSにCentOS7

その上にOpenVzでCentOS7コンテナ

そのコンテナの中にDockerEngine

OpenVzのCentOS7コンテナが実機という認識で大丈夫です。

実機
CentOS Linux release 7.3.1611 (Core)
OpenVz:3.10.0-862.11.6.vz7.64.7

仮想PC
CentOS Linux release 7.2.1511 (Core)
Docker:Docker version 1.13.1, build b2f74b2/1.13.1
メモリ4G
cpu:Intel(R) Xeon(R) CPU X3480 @ 3.07GHz, 8 cores

 

参考

sameersbn/docker-gitlab
Dockerized GitLab. Contribute to sameersbn/docker-gitlab development by creating an account on GitHub.

 

 

(準備)Docker-composeのインストール

まずはDocker-composeを使えるようにインストール

# curl -L https://github.com/docker/compose/releases/download/1.9.0/run.sh > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

 

コンテナの立ち上げ

作業フォルダを決めます(任意)

今回は「/home/GitLab/」にしました。

 

作業ファルダに移動します

# cd /home/GitLab/

 

作業ファルダに「docker-compose.yml」をダウンロード

# wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

 

ダウンロードした「docker-compose.yml」を編集します

たくさん記述がありますが変更するのは3か所

- TZ=Asia/Kolkata
- GITLAB_PORT=10080
- GITLAB_SSH_PORT=10022

上記を下記に変更します

- TZ=Asia/Tokyo
- GITLAB_PORT=80
- GITLAB_SSH_PORT=22

記事の下に書き換えたソースを貼ってあります!

 

 

作業フォルダでdocker-composeコマンドを実行

オプション(-d)でバックグラウンド実行

# docker-compose up -d
gitlab_postgresql_1 is up-to-date
gitlab_redis_1 is up-to-date
Recreating gitlab_gitlab_1

 

起動しているかの確認

STATUS が「Up ?? seconds」になっているので立ち上がっています

# docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                                   NAMES
464df2ec082c        sameersbn/gitlab:11.9.1   "/sbin/entrypoint...."   37 seconds ago      Up 34 seconds       443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp   gitlab_gitlab_1
8699d7e4faad        sameersbn/redis:4.0.9-1   "/sbin/entrypoint...."   43 seconds ago      Up 39 seconds       6379/tcp                                                gitlab_redis_1
bf0c032db125        sameersbn/postgresql:10   "/sbin/entrypoint.sh"    57 seconds ago      Up 55 seconds       5432/tcp                                                gitlab_postgresql_1

 

GitLabが起動するまでしばらく時間がかかるのでログを確認

# docker logs gitlab_gitlab_1 -f

~~~~~~~~~~(略)~~~~~~~~~~~~

2019-04-04 17:21:40,400 INFO success: gitaly entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2019-04-04 17:21:40,400 INFO success: sidekiq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2019-04-04 17:21:40,400 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2019-04-04 17:21:40,402 INFO success: gitlab-workhorse entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2019-04-04 17:21:40,403 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2019-04-04 17:21:40,404 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2019-04-04 17:21:40,405 INFO success: sshd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

このような表記になってから5分程度かかります

 

5分経ったら

自分のIP:10080

へアクセス!

 

最初にROOTパスを決めます。

GitLab Runnerのセットアップ

作業フォルダを決めます(任意)

今回は「/home/GitLabRunner/」にしました。

作業フォルダに「docker-compose.yml」を作成します。

version: '2'

services:
runner:
restart: always
image: gitlab/gitlab-runner:latest
volumes:
- /home/docker/gitlab_ci/runner:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock

 

作業ファルダに移動し実行する

# cd /home/GitLabRunner/
# docker-compose.yml

 

 

これでGitLab Runnerが起動します。

確認

# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b667662badfe sameersbn/gitlab:11.9.5 "/sbin/entrypoint...." 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp, 443/tcp, 0.0.0.0:10022->22/tcp gitlab_gitlab_1
68011a461769 sameersbn/redis:4.0.9-1 "/sbin/entrypoint...." 17 minutes ago Up 17 minutes 6379/tcp gitlab_redis_1
f1469d300401 sameersbn/postgresql:10 "/sbin/entrypoint.sh" 17 minutes ago Up 17 minutes 5432/tcp gitlab_postgresql_1
eddc610e1b53 gitlab/gitlab-runner:latest "/usr/bin/dumb-ini..." 19 hours ago Up 19 hours gitlab_runner

 

起動していたら、dockerコマンドで GitLabRunnerの設定をする。

GitLabを開き、

Admin Area

 

Overview → Runners

 

赤丸でまるをしているところが

URL

トークン

 

# docker exec -it gitlab_runner gitlab-runner register \
--url [URL] \
--registration-token [トークン] \
--name test01 \
--tag-list tags \
--executor docker \
--docker-image alpine:latest

上から
1.URL
2.トークン
3.Runner名
4.タグ
5.実行環境
6.dockerイメージ

情報を入力後実行

 

対話で質問されるが

全て空白でOK

 

以上でGitLab Runnerが起動しました。

 

 

version: '2'

services:
  redis:
    restart: always
    image: sameersbn/redis:4.0.9-1
    command:
    - --loglevel warning
    volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:10
    volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm

  gitlab:
    restart: always
    image: sameersbn/gitlab:11.9.5
    depends_on:
    - redis
    - postgresql
    ports:
    - "10080:80"
    - "10022:22"
    volumes:
    - /srv/docker/gitlab/gitlab:/home/git/data:Z
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Tokyo
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=localhost
    - GITLAB_PORT=80
    - GITLAB_SSH_PORT=22
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=notifications@example.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=mailer@example.com
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

 

コメント

タイトルとURLをコピーしました