LoginSignup
6
12

More than 3 years have passed since last update.

proxy環境下でDocker Composeを用いてCentOS7上にGitLab Dockerを作成

Last updated at Posted at 2019-08-24

はじめに

どうも!生産技術部のエンジニアです。弊社ではエクセルで作った台帳を用いた、ナウいプログラムの管理を行っています。
最近までは、これで問題なく運用出来ていましたが、人手が介在する事による品質トラブルが重なり、この度、システマチックに管理する事となりましたw
社内で発生する品質トラブルに立ち向かうため、Gitサーバを立ち上げましたので作業手順をここに残します。

(電気メカ系の生技にとって、GitとかLinuxとかオーパーツ。。。)

GitLab関連の投稿済み内容

環境

  • CentOS : 7.6.1810
  • Docker-CE : 19.03.1
  • Docker Compose : 1.25.0
  • GitLab-CE Docker: 12.2.0-ce.0

各種プロキシ設定

プロキシ環境下で外部にアクセスする場合、各コマンド毎にプロキシ設定が必要になる。
gitlabをインストールするまでに、yum、curl、dockerを利用するため、各々のプロキシ設定を行う。

  • OS全体にプロキシを適用
/etc/profile
PROXY='proxy.example.com:8888' # proxyサーバのドメインとポートを指定
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY

ファイルを保存し以下を実行して設定を反映

$ source /etc/profile
  • yumのプロキシ設定
/etc/yum.conf
proxy=http://proxy.example.com:8888
  • curlのプロキシ設定
~/.curlrc
proxy = http://proxy.example.com:8888
  • dockerのプロキシ設定

Docker公式のプロキシ設定マニュアルに従い設定する。

$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ vim /etc/systemd/system/docker.service.d/http-proxy.conf

http-proxy.confを編集する。

http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8888" "NO_PROXY=localhost"

設定を再読み込み

$ systemctl daemon-reload

Firewallの設定

gitlabを外部に公開するために、Firewallの設定を行う。CentOS7におけるファイアウォールの設定コマンド一覧は、ここを参照する。http,ssh等の80、22番ポートを使用するサービスが起動中の場合は、gitlabで利用するポートを80から4080番ポート、22から4022番ポートに変更する。もしくは、サービスを停止する。今回は、22番のみポートの変更を行います。

項目 概要
gitlab:ports 80:80 外部に公開するポート番号
gitlab:ports 4022:22 外部に公開するポート番号

変更にあたり、利用するポートのファイアウォールを設定する。

$ firewall-cmd --add-port=80/tcp --zone=public --permanent
$ firewall-cmd --add-port=4022/tcp --zone=public --permanent
$ firewall-cmd --reload
success

Dockerのインストール

Docker公式のマニュアルに従ってインストールする。
古いバージョンのDockerがインストールされている場合は削除する。

$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  • 必要なパッケージのインストール
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • レポジトリの追加
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • Dockerのインストール
$ sudo yum install docker-ce docker-ce-cli containerd.io

GPG keyを許可するように求められたら、以下と一致する事を確認し許可する。
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35

  • Dockerの起動
$ sudo systemctl start docker

サーバ起動時に、自動的にDocker Engineも起動したい場合は、こちらのコマンドも実行

$ systemctl enable docker

Docker Composeの最新版をインストールする。最新版はここを参照する。

# Docker Composeの最新版をダウンロードする
# `1.25.0` の値はバージョンに応じて変更する
$ curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

GitLabのインストール・起動

GitLab公式のマニュアルをベースにdocker-compose.ymlを作成する。docker-compose.ymlとは、Dockerコンテナの起動オプションを記載したファイルです。
公式からの変更点を以下に示します。

項目 概要
gitlab:ports 80:80 外部に公開するポート番号
gitlab:ports 4022:22 外部に公開するポート番号

docker-compose.ymlは以下の様に記載する。

docker-compose.yml
web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.example.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.example.com'
      gitlab_rails['gitlab_shell_ssh_port'] = 4022
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - '80:80'
    - '443:443'
    - '4022:22'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'

docker-compose.ymlのあるディレクトリで実行し、構築完了

# Dockerの起動およびリロード
$ docker-compose up -d
# Dockerの停止
$ docker-compose down

ログの確認

GitLabが正常に立ち上がっている事を確認するため、起動中のDockerコンテナのログを表示する。
GitLabが立ち上がるまでに5分程度かかります。

  • 現在起動中のコンテナの一覧を表示
$ docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED              STATUS                                 PORTS                                                            NAMES
xxxxxxxxxxxx        gitlab/gitlab-ce:latest   "/assets/wrapper"   About a minute ago   Up About a minute (health: starting)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4022->22/tcp   gitlab_web_1
  • ログの確認
# リアルタイムで表示
$ docker logs -f gitlab_web_1
# タイムスタンプを追加して表示
$ docker logs -t gitlab_web_1

立ち上がった後、ローカルからhttp://localhostまたは、外部からhttp://gitlab.example.comにアクセスしログインページが表示されることを確認する。

GitLabの設定(オプション)

docker-compose.ymlにGitLabの設定を追加することも出来ますが、gitrab.rbの設定を反映したい場合の方法を説明します。gitrab.rbとは、GitLabの各種設定を記載したファイルです。まず、Docker ComposeでGitLabのコンテナを作成した場合、GitLabのコマンドは以下の様に実行する必要があります。

# 通常のgitlab-ctlコマンド
$ gitlab-ctl [command and options...]
↓
# dockerを使った場合のgitlab-ctlコマンド
$ docker exec -it gitlab_web_1 gitlab-ctl [command and options...]

gitrab.rbに追加したい設定を記入し、設定を反映する。

$ docker exec -it gitlab_web_1 gitlab-ctl reconfigure

最後に

知識が足りない部分は先人の力を借りて、無事に立ち上げる事ができました。間違っている内容があれば連絡ください!
今回は、GitLabの立上げまでを取り上げましたが、GitLabから社内メールサーバへ通知メールを送る設定やGitLabに同封されたチャットアプリ(Mattermost)との連携を行いました。また、GitLab Runnnerの導入も実施予定となっています。そして、一番重要な生産技術の業務フローにあったGitの運用手順についても検討しています。

うまく運用出来ましたら、記事にしたいと思います。

ご参考

6
12
0

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
6
12