Docker + GITLAB をローカルで動かしてみる。

Server

gitlabを19.2.1にしてローカルでちょこっと動かしてみようかなと

Intel Mac(メモリ 64GB / Core i5)上で、Docker を使って GitLab EE 19.2.1 をローカル環境に立ち上げる完全手順です。

準備するもの・要件確認

項目設定内容
動作環境Intel Mac(macOS) / メモリ 64GB
GitLab バージョンgitlab/gitlab-ee:19.2.1-ee.0(EE版)
Docker割当メモリ8.00 GB(必要に応じて 16GB まで拡大可)
Docker割当 CPU23 CPU
Webアクセス用URLhttp://localhost:8929
SSHアクセス用ポート2222(例: git clone ssh://git@localhost:2222/...

OrbStack(オーブスタック) を使われるのは非常に素晴らしい選択です!
特に Mac での開発(Xcode でのアプリ開発や静的サイト開発など)を行っている場合、Docker Desktop から OrbStack に変えるだけで「Mac が重くならない・バッテリーが減らない・起動が数秒」という圧倒的な快適さを実感できます。

1. OrbStack のここがすごい!(Docker Desktop との比較)

  1. 起動が「一瞬(約2秒)」
    • Docker Desktop は起動に10〜20秒ほどかかりますが、OrbStack は開いた瞬間に使えます。
  2. メモリ・CPU 消費が圧倒的に少ない
    • 使っていない時は自動で CPU 使用率を 0% に落としてくれるため、Mac のファンが回ったり熱くなったりしません。
  3. コマンドや設定はそのまま完全互換
    • これまで説明した docker compose up -ddocker compose down などのコマンド、docker-compose.yml ファイルは何ひとつ変えずにそのまま使えます

2. 導入方法(簡単な 3 ステップ)

STEP 1: インストール

公式サイトからダウンロードするか、Homebrew でインストールします。

  • 公式サイトから: https://orbstack.dev/ にアクセスし、「Download for Mac」をクリックしてインストール。
  • brew install orbstack
$ brew install orbstack
==> Fetching downloads for: orbstack

STEP 2: 初期セットアップ

  1. インストールした OrbStack アプリを起動します。
  2. 画面の指示に従ってセットアップを進めます(数クリックで完了します)。
  3. ※もしすでに Docker Desktop が入っている場合は、OrbStack が「Docker Desktop から設定を引き継ぎますか?」や「Docker コマンドの向き先を OrbStack に切り替えますか?」と聞いてくるので、許可(OK)を押します。

STEP 3: 動作確認

ターミナルを開いて、以下のコマンドを叩いてみます。
Bash

% docker context ls
NAME         DESCRIPTION                               DOCKER ENDPOINT                                   ERROR
default      Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
orbstack *   OrbStack              unix:///Users/junichi/.orbstack/run/docker.sock

出力結果の中で orbstack*(チェック)がついていれば、準備完了です!

3. 実際の使い方はどう変わる?

「何も変わりません」 のでご安心ください!
先ほど解説した WordPress や GitLab の操作も、今まで通りターミナルでそのまま実行できます。

  • 起動するとき:
    docker compose up -d
  • 停止するとき:
    docker compose down
  • GitLab のバックアップ復元:
    docker compose exec gitlab gitlab-backup restore BACKUP=...

注意点(1つだけ)

  • 個人利用や小規模利用は無料ですが、大企業(従業員数や売上規模が大きい会社)での商業利用のみ有料ライセンスが必要になります。個人開発や一般的な利用であれば無料で使えます。

Mac のリソースを圧迫しない環境を作るには間違いなく OrbStack が現時点で Mac 最強の選択肢 ですので、ぜひ試してみてください!

( docker desktopを使う場合 : Docker Desktop の準備とメモリ設定

すでに Docker Desktop をお持ちの場合は「2. メモリ割当設定」へお進みください。

  1. Docker Desktop for Mac (Intel) の入手
    • Docker 公式サイト から 「Mac with Intel chip」 用の DMG ファイルをダウンロードしてインストールします。
  2. Docker アプリを起動
    • アプリケーションから Docker を開き、メニューバーにクジラマーク 🐳 が固定表示されるまで待ちます。
  3. リソース(メモリ・CPU)の設定
    • メニューバーの ⚙️(歯車アイコン)➔ SettingsResources(または Virtualization)を開きます。
    • 以下のように調整して、右下の 「Apply & restart」 をクリックします。
      • Memory: 8.00 GB
      • CPUs: 2 または 3
      • Swap: 1.00 GB

STEP 2: 作業用フォルダと設定ファイルの作成

ターミナル(Mac 標準アプリ)を開き、以下のコマンドブロックを 上から順に丸ごとコピペ して実行します。

1. フォルダの作成と移動

Bash

mkdir -p ~/gitlab-local
cd ~/gitlab-local

2. docker-compose.yml の作成

EE版 19.2.1 に固定し、メモリ節約・軽量化設定を組み込んだ構成ファイルを作成します。以下のコマンドをそのまま実行してください。
Bash

cat << 'EOF' > docker-compose.yml
services:
  gitlab:
    image: 'gitlab/gitlab-ee:19.2.1-ee.0'
    container_name: 'gitlab-local'
    restart: always
    hostname: 'gitlab.local'
    ports:
      - '8980:80'
      - '8922:22'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        # 1. 外部URL設定
        external_url 'http://gitlab.local'
        gitlab_rails['gitlab_shell_ssh_port'] = 8922

        # 2. メモリ節約(監視・不要サービスの停止)
        prometheus['enable'] = false
        grafana['enable'] = false
        gitlab_exporter['enable'] = false
        alertmanager['enable'] = false
        node_exporter['enable'] = false
        redis_exporter['enable'] = false
        postgres_exporter['enable'] = false
        gitlab_kas['enable'] = false
        registry['enable'] = false

        # 3. 性能最適化(ローカル/8GB用)
        puma['worker_processes'] = 2
        sidekiq['max_concurrency'] = 10
    volumes:
      # データの保存先(MacのFinderから ~/gitlab-data で確認可能)
      - '$HOME/gitlab-data/config:/etc/gitlab'
      - '$HOME/gitlab-data/logs:/var/log/gitlab'
      - '$HOME/gitlab-data/data:/var/opt/gitlab'
    shm_size: '256m'
EOF

STEP 3: GitLab EE の起動

フォルダ内に docker-compose.yml がある状態(cd ~/gitlab-local の位置)で、以下の起動コマンドを実行します。
Bash

% docker compose up -d

[+] up 6/10
 ⠙ Image gitlab/gitlab-ee:19.2.1-ee.0 [⠀⣿⣷⣿⣷⣿⣿⣿⣿] 93.33MB / 1.505GB Pulling

[+] up 12/12
 ✔ Image gitlab/gitlab-ee:19.2.1-ee.0 Pulled                                                                                                                             609.8s
 ✔ Network gitlab-local_default       Created                                                                                                                              0.2s
 ✔ Container gitlab-local             Started
  • 初回実行時は、gitlab-ee:19.2.1-ee.0 のイメージデータ(約 2〜3GB)が自動的にダウンロードされます。

STEP 4: 初回ログインとパスワード確認

docker compose up -d 実行直後は、裏で PostgreSQL や GitLab の初期化処理が行われています。

  1. 3 〜 5 分待機する
    • コマンド実行直後にブラウザで開くと 502 Bad Gateway と表示されますが、異常ではありません。バックグラウンドの初期化が終わるまで 3〜5 分ほどお待ちください。
  2. ブラウザでアクセス
    • Chrome や Safari で http://gitlab.local:8980 を開きます。
    • ログイン画面が表示されれば準備完了です。
  3. 初期 root パスワードの確認
    • ターミナルで以下のコマンドを実行すると、自動生成されたパスワードが表示されます。
      docker exec -it gitlab-local cat /etc/gitlab/initial_root_password
    • ログイン情報:
      • ユーザー名: root
      • パスワード: (上記コマンドで出力された文字列)

注意: 初期パスワードは 24 時間で自動削除されるため、初回ログイン後すぐに画面右上のアイコン ➔ Edit profilePassword からご自身のパスワードに変更してください。

状態

% docker ps
CONTAINER ID   IMAGE                          COMMAND                   CREATED         STATUS                            PORTS                                                                                       NAMES
678ecd9e123c   gitlab/gitlab-ee:19.2.1-ee.0   "/assets/init-contai…"   9 seconds ago   Up 8 seconds (health: starting)   443/tcp, 0.0.0.0:8922->22/tcp, [::]:8922->22/tcp, 0.0.0.0:8980->80/tcp, [::]:8980->80/tcp   gitlab-local
% docker compose logs -f gitlab
gitlab-local  |       [execute] Skipping Topology Service health check due to the cell being disabled
gitlab-local  |                 Running db:schema:load rake task
gitlab-local  |                 psql:/opt/gitlab/embedded/service/gitlab-rails/db/structure.sql:9: NOTICE:  extension "btree_gist" already exists, skipping
gitlab-local  |

reconfigureの途中のログが見えます。完了を待ちます

日常の運用コマンドまとめ

今後の操作はすべてターミナルで cd ~/gitlab-local を実行した状態で行います。

  • GitLab を停止する
    Bashdocker compose down(Mac をシャットダウンする場合も、データを保持したまま安全に停止します)
  • GitLab を再起動・開始する
    Bashdocker compose up -d
  • 動作状況(ログ)を確認する
    Bashdocker compose logs -fCtrl + C でログ表示を抜けられます)

これで Mac 内(~/gitlab-data)にすべてのデータを保持した、爆速で快適な GitLab EE 19.2.1 ローカル環境が完了します!

バックアップを戻す!

% ls gitlab-local-data/config/gitlab-secrets.json に 19.2.1で保存したものを上書き

docker exec -it gitlab-local ls -l /etc/gitlab/gitlab-secrets.json
-rw------- 1 root root 16316 Aug 12 12:20 /etc/gitlab/gitlab-secrets.json

となっているのでOK

docker exec -it gitlab-local gitlab-ctl reconfigure 設定反映(secrets
Running handlers complete
[2026-08-12T12:24:06+00:00] INFO: Report handlers complete
Infra Phase complete, 72/687 resources updated in 01 minutes 02 seconds
gitlab Reconfigured!
docker exec -it gitlab-local gitlab-ctl stop puma とりあえず止める

tarをbackupsに置く

% mv ./gitlab19/1786529738_2026_08_12_19.2.1-ee_gitlab_backup.tar ./gitlab-local-data/data/backups/

restoreする

docker exec -it gitlab-local gitlab-backup restore BACKUP=1786529738_2026_08_12_19.2.1-ee

Restoring database ...
2026-08-12 12:27:04 UTC -- Be sure to stop Puma, Sidekiq, and any other process that
connects to the database before proceeding. For Omnibus
installs, see the following link for more information:
http://gitlab.grt/help/administration/backup_restore/restore_gitlab.md#restore-for-linux-package-installations
Before restoring the database, we will remove all existing tables to avoid future upgrade problems. Be aware that if you have custom tables in the GitLab database these tables and all data will be removed. Do you want to continue (yes/no)? yes
2026-08-12 12:34:05 UTC -- Restoring agent plan content ... done
2026-08-12 12:34:05 UTC -- Restoring external diffs ...
2026-08-12 12:34:05 UTC -- Restoring external diffs ... done
This task will now rebuild the authorized_keys file.
You will lose any data stored in the authorized_keys file.
Do you want to continue (yes/no)?
2026-08-12 12:34:53 UTC -- Deleting backups/tmp ... done
2026-08-12 12:34:53 UTC -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need to restore these files manually.
2026-08-12 12:34:53 UTC -- Restore task is done.
2026-08-12 12:34:53 UTC -- Deleting backup and restore PID file at [/opt/gitlab/embedded/service/gitlab-rails/tmp/backup_restore.pid] ... done
% docker exec -it gitlab-local gitlab-ctl restart
ok: run: gitaly: (pid 6349) 0s
ok: run: gitlab-workhorse: (pid 6373) 0s
ok: run: logrotate: (pid 6387) 1s
ok: run: nginx: (pid 6393) 0s
ok: run: postgresql: (pid 6403) 0s
ok: run: puma: (pid 6405) 1s
ok: run: redis: (pid 6417) 0s
ok: run: sidekiq: (pid 6432) 0s
ok: run: sshd: (pid 6439) 0s

OK

ログインしてデータはOKっぽい!
git がちゃんと使えるかテスト

ssh git 接続

% ssh gitlab-local
PTY allocation request failed on channel 0
Welcome to GitLab, @junichi!
Connection to gitlab.grt closed.

gitlab-localは.ssh/configに設定しています

Host gitlab-local
  User git
  Port 8922
  HostName gitlab.grt
  IdentityFile ~/.ssh/id_rsa_gitlab_local
  TCPKeepAlive yes
  IdentitiesOnly yes
git clone ssh://git@gitlab.grt:8922/junichi/your-project.git これが
git clone gitlab-local:/junichi/your-project.gitでOK

cloneもpushもOKでした!

stop ? down

% docker compose stop
[+] stop 1/1
 ✔ Container gitlab-local Stopped

stopの場合startで早く復帰できる?

 docker compose start
[+] start 1/1
 ✔ Container gitlab-local Started

通常は stop > startで使わない時は down > 使う時 up -dで良さそうですね

約10時間indigo4GBつかって 25.5円くらいですね^^v

お気軽にコメントください!

スパム対応のためコメント認証に数日かかることがありますが、お気軽にコメントいただけると嬉しいです^^

コメント

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