18
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker ComposeでGitLabを起動

Last updated at Posted at 2019-07-28

Docker Composeとは

  • Dockerコンテナの設定をyamlファイルで定義し、構築・管理が行えるツール
    • docker container runコマンドのオプションなどをファイルで定義するイメージ
  • 複数個のコンテナを扱える

メリット

  • 設定をコードで管理できる(IaC)
  • 複数個のコンテナを扱う場合は
    • runコマンドを何回も打たなくて済む
    • コンテナ同士の依存関係をファイルで定義できる

実行環境

  • OS
    • Amazon Linux 2
  • 前提
    • Docker 18.06.1-ceがインストール済み

インストール

  • Dockerエンジンのパッケージには含まれていないので別途インストールが必要
  • Docker for Windows/Macには含まれている
  • 公式ドキュメントに沿って実行

手順

  • 資源をダウンロード
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 実行権限を付与
$ sudo chmod +x /usr/local/bin/docker-compose
  • バージョンが表示されれば成功
$ docker-compose version
docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j  20 Nov 2018

実行

yamlファイル

  • 今回は例としてGitLabのコンテナを動かす
docker-compose.yaml
version: '3.7'
services:
  gitLab:
    image: gitlab/gitlab-ce:latest
    ports:
     - "80:80"
    volumes:
     - '/srv/gitlab/config:/etc/gitlab'
     - '/srv/gitlab/logs:/var/log/gitlab'
     - '/srv/gitlab/data:/var/opt/gitlab'
  • version

  • servicesの配下に適当な名前を付与し、その配下に設定を記述する

  • image

    • 起動させるDockerイメージ
  • ports

    • ホスト側とコンテナ側で何番のポートをフォワーディングするかを指定
    • pオプションに該当
  • volumes

    • コンテナからマウントするホストのパスを指定
    • vオプションに該当
  • 上記の設定はdocker container runコマンドの場合は次のコマンドに該当する

$ docker container run gitlab/gitlab-ce:latest -p 80:80 -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab

実行

  • docker-compose upのコマンドで実行可能
$ docker-compose -f ./docker-compose.yaml up -d
  • f オプションでyamlファイルを指定できるが、カレントパスにdocker-compose.yaml(yml)という名前のファイルがあれば省略可能
    • カレントパス以外のパスにあるファイルや、他の名前が付いているファイルを指定する場合は必須
    • これ以外のdocker-composeコマンドでもファイルを参照するので、基本的にカレントディレクトリにファイルがある状態で操作するべき
  • d オプションでコンテナをデタッチモード(バックグラウンドでの実行)で起動される
  • 以下のコマンドで起動が確認できる
$ docker-compose  ps
         Name                       Command                       State                          Ports
---------------------------------------------------------------------------------------------------------------------
gitlab_gitLab_1          /assets/wrapper                  Up (health: starting)   22/tcp, 443/tcp, 0.0.0.0:80->80/tcp

名前に関して

  • [プロジェクト名] _ [サービス名] _ [採番された番号]で命名される
    • プロジェクト名
      • 環境変数「COMPOSE_PROJECT_NAME」に指定されている値
      • 設定されていない場合はyamlファイルが配置されているフォルダ名が設定される
    • サービス名
      • docker-compose.yamlのservicesで指定した名前
    • 採番された番号
      • スケールする場合にコンテナ毎に採番される
      • スケールしていない場合は1が付与される
  • 参考

停止

  • 以下のコマンドで停止できる
$ docker-compose stop
Stopping gitlab_gitLab_1        ... done

実行(複数コンテナ)

yamlファイル

  • GitLabのCIツールであるGitLab Runnerを同時に構築する
docker-compose.yaml
version: '3.7'
services:
  gitLab:
    image: gitlab/gitlab-ce:latest
    ports:
     - "80:80"
    volumes:
     - '/srv/gitlab/config:/etc/gitlab'
     - '/srv/gitlab/logs:/var/log/gitlab'
     - '/srv/gitlab/data:/var/opt/gitlab'
  gitLab-runner:
    image: gitlab/gitlab-runner:latest
    volumes:
     - '/srv/gitlab-runner/config:/etc/gitlab-runner'
     - '/var/run/docker.sock:/var/run/docker.sock'
    networks:
     mynet:
      ipv4_address: 172.20.0.3
    depends_on:
      - gitLab
  • 同じようにservicesを定義すればよい
  • 今回はgitLab-runnerという名前で追記
  • depends_onを記載することでコンテナ間の依存関係を定義できる
    • GitLabが起動した後にRunnerを起動させたいので、Runnerのdepends_onにGitLabのサービス名を指定しておく

実行

  • 先ほどと同様に起動する
$docker-compose -f ./docker-compose.yaml up -d
Starting gitlab_gitLab_1 ... done
Starting gitlab_gitLab-runner_1 ... done
18
27
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
18
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?