社内CentOS7にGitlabを立てたやつ

CentOS7 install GitLab by Docker

環境

$ cat /etc/redhat-release
$ CentOS Linux release 7.8.2003 (Core)
$ arch
$ x86_64

Docker, docker-compose のインストール

CentOS7 アップデート

$ yum update
$ yum upgrade

<!-- ### 古い Docker のアンインストール

$ yum remove docker docker-client docker-client-latest docker-common docker-engine docker-latest docker-latest-logrotate docker-logrotate
$ rm /etc/yum.repos.d/docker.repo

関連パッケージ

$ yum install -y yum-utils device-mapper-persistent-data lvm2

リポジトリの追加

$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Docker CE のインストール

$ yum install -y docker-ce docker-ce-cli containerd.io

OS 起動時に、Docker の起動を設定

$ systemctl enable --now docker

Docker コマンドでの sudo を許可

$ sudo usermod -aG docker $USER

※再ログインで反映される。

docker-compose  インストール

最新版を Release から確認し、インストール

docker-compose

$ curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

実行権限を付与

$ sudo chmod +x /usr/local/bin/docker-compose

バージョン確認

$ docker-compose version

GitLab 環境の構築

docker-compose.yml の作成

GitLab 用の docker-compose.yml を取得し、任意の場所に作成
以下のファイルが使い勝手が良い。
sameersbn/docker-gitlab

version: "2"

services: redis: restart: always image: sameersbn/redis:4.0.9-2 command: - --loglevel warning volumes: - redis-data:/var/lib/redis:Z

postgresql: restart: always image: sameersbn/postgresql:10-2 volumes: - postgresql-data:/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:12.9.2 depends_on: - redis - postgresql ports: - "10080:80" - "10022:22" volumes: - gitlab-data:/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=Tokyo

  - GITLAB_HTTPS=false
  - SSL_SELF_SIGNED=false

  - GITLAB_HOST=localhost
  - GITLAB_PORT=10080
  - GITLAB_SSH_PORT=10022
  - 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=&#34;Our SAML Provider&#34;
  - 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_AUTH0_SCOPE=

  - OAUTH_AZURE_API_KEY=
  - OAUTH_AZURE_API_SECRET=
  - OAUTH_AZURE_TENANT_ID=

volumes: redis-data: postgresql-data: gitlab-data:

GITLAB_HOST=localhostの状態だと、clone したい時にサイト上のパスが localhost で表示されるので
IP アドレスもしくは、ホスト名に変更が必要

ファイアーウォールの設定変更

$ sudo firewall-cmd --add-port=10080/tcp --zone=public --permanent
$ sudo firewall-cmd --reload

docker-compose による起動

$ docker-compose up -d //開始
$ docker-compose down  //停止

GitLab のバックアップ等、データの保存先

/var/lib/docker/volumes/