ローカル開発用Docker環境をDocker DesktopからOrbstackに変えてみた【1】

開発環境

ということで、まずはOrbstockのインストール。
いやね、マジでDockerって屁が出るほど楽なのねwww
まあ、Linuxをコマンドラインでガシガシいじらないといけなかったのは、サーバーに対する理解を深めるにはとても役立ったのでそれはそれで良し。

Orbstockのインストール

さて、ちゃちゃっとやってしまおう。

GUIでインストール

これは普通にサイトにアクセスしてダウンロードしてきてdmgファイルからインスコする。
Orbstock 公式サイト

何故か私のMBPではChromeが「未確認のダウンロードをブロックしました」と言ってdmgファイルをダウンロードしてきてくれない。CPUの世代など幾つかの要因が考えられるらしいが、面倒なのでHomebrewで試してみる。

Homebrewでインストール

$ brew install --cask orbstack

==> Caveats
Open the OrbStack app to finish setup.

==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/4f00af9
######################################################################### 100.0%
==> Downloading https://cdn-updates.orbstack.dev/amd64/OrbStack_v2.0.1_19784_amd
######################################################################### 100.0%
==> Installing Cask orbstack
==> Moving App 'OrbStack.app' to '/Applications/OrbStack.app'
==> Linking Bash Completion 'orbctl.bash' to '/usr/local/etc/bash_completion.d/o
==> Linking Fish Completion 'orbctl.fish' to '/usr/local/share/fish/vendor_compl
==> Linking Zsh Completion '_orb' to '/usr/local/share/zsh/site-functions/_orb'
==> Linking Zsh Completion '_orbctl' to '/usr/local/share/zsh/site-functions/_or
==> Linking Binary 'orbctl' to '/usr/local/bin/orbctl'
==> Linking Binary 'orb' to '/usr/local/bin/orb'
🍺  orbstack was successfully installed!
==> No outdated dependents to upgrade!
~ $ which orb
/usr/local/bin/orb

## バージョンは以下
$ orb version
Version: 2.0.1 (2000100)
Commit: 7dd65a773684826acae235283956831253870984 (v2.0.1)
$ docker --version
Docker version 28.3.3, build 980b856

Orbstockを起動!


Nextをクリック

Dockerを選択すると

分かりやすそう。
まずはこれでOrbstock側の準備は一旦完了。

docker-compose-lampのクローン

作業ディレクトリを ~/WORK として、docker-compose-lampをクローンする。

$ mkdir ~/WORK
$ cd ~/WORK
$ git clone https://github.com/sprintcube/docker-compose-lamp.git
$ cd docker-compose-lamp
docker-compose-lamp $ ls -la
total 80
drwxr-xr-x  16 yngdrsk  staff    512  9 18 10:37 .
drwxr-xr-x   3 yngdrsk  staff     96  9 18 10:37 ..
drwxr-xr-x  12 yngdrsk  staff    384  9 18 10:37 .git
drwxr-xr-x   3 yngdrsk  staff     96  9 18 10:37 .github
-rw-r--r--   1 yngdrsk  staff     70  9 18 10:37 .gitignore
drwxr-xr-x  19 yngdrsk  staff    608  9 18 10:37 bin
drwxr-xr-x   5 yngdrsk  staff    160  9 18 10:37 config
drwxr-xr-x   4 yngdrsk  staff    128  9 18 10:37 data
-rw-r--r--   1 yngdrsk  staff   5247  9 18 10:37 dev_build_container.sh
-rw-r--r--   1 yngdrsk  staff   2510  9 18 10:37 docker-compose.yml
-rw-r--r--   1 yngdrsk  staff   1125  9 18 10:37 LICENSE
drwxr-xr-x   5 yngdrsk  staff    160  9 18 10:37 logs
-rw-r--r--   1 yngdrsk  staff  10589  9 18 10:37 README.md
-rw-r--r--   1 yngdrsk  staff   1861  9 18 10:37 sample.env
-rw-r--r--   1 yngdrsk  staff     83  9 18 10:37 todo.md
drwxr-xr-x   7 yngdrsk  staff    224  9 18 10:37 www

Gitまわり

# 自分のgithubで新規プライベートリポジトリorbstock-dockerを作成済み
$ git remote set-url origin https://github.com/xxxxxxx/orbstock-docker.git
$ git config --local user.name "xxxxxxxx"
$ git config --local user.email "xxxxx@xxxxxx"
# アクセストークンはglobalに登録済み

# とりまpush
$ git push -u origin main

docker-compose-lamp の環境設定ファイル準備と起動

.envファイルをサンプルからコピーして、とりあえずそのままのパラメータで起動だけやってみる。

$  cp sample.env .env
$ docker compose up -d

あと起動の前に、docker-compose.yml の先頭行のバージョン表記を削除

version: "3"  # <- 削除

起動トラブル

redisの起動中に、いきなりキーチェーンアクセスのパスワードを求められた。

そもそも全く記憶にない。Gemini先生に聞いてみた

このポップアップは、Docker Credential Helperがキーチェーンに保存されたDockerの認証情報(ログインパスワードやトークン)にアクセスしようとしているために表示されます。

Redis自体がこの認証情報を直接要求しているわけではありません。おそらく、あなたが実行しようとしているDockerコンテナやDocker Composeの設定に、Docker Hubなどのプライベートなレジストリからイメージをプルする必要があるため、認証情報が必要になっています。

原因の仕組み

  1. あなたがdocker pulldocker-compose upなどのコマンドを実行。
  2. 指定されたイメージがDocker Hubなどのプライベートレジストリにある。
  3. Dockerクライアントは認証が必要だと判断し、docker-credential-osxkeychain(Docker Credential Helperの一つ)を呼び出す。
  4. このヘルパーは、過去に保存された認証情報をmacOSのキーチェーンから取得しようとする。
  5. キーチェーンは、セキュリティのため、外部からのアクセスに対してユーザーのパスワード入力を要求する。
  6. この一連の流れで、「キーチェーンアクセス」のパスワード入力ダイアログが表示される、というわけです。

したがって、Redisコンテナを起動するために、そのイメージの取得に認証が必要になっていると考えられます。パスワードを入力して「許可」または「常に許可」を選択すれば、Dockerは認証情報を取得し、イメージのプルを続行できます。

私:過去に認証情報を得たような記憶がない

はい、その可能性は十分にあります。過去に明示的に認証情報を入力した記憶がなくても、キーチェーンに情報が保存されていることはよくあります。

なぜ記憶にないのか?

主に以下の2つのケースが考えられます。

  1. Docker Desktopの初期設定:

    • Docker Desktopをインストールして初めて起動した際、Docker Hubにログインするように求められることがあります。
    • このとき、ログイン情報(ユーザー名とパスワード)を入力すると、自動的に「キーチェーンに保存する」というオプションが有効になっており、意識せずに保存された可能性があります。
  2. サードパーティ製ツールの利用:

    • 開発ツールや統合開発環境(IDE)の中には、Dockerとの連携機能を持つものがあります。これらのツールが、バックグラウンドで認証を求め、その際にOSのキーチェーンに認証情報を保存したケースも考えられます。

つまり、Dockerのコマンドラインから直接docker loginを実行しなくても、GUIアプリケーションや他のツール経由で認証情報が登録されていることがあり、それが今回のポップアップ表示につながっています。

ということで、試しにDocker Desktopアプリを起動してから

$ docker compose up -d

# すると・・・
$ docker compose up -d
[+] Running 5/5
 ✔ Network lamp_default       Created    0.1s 
 ✔ Container lamp-mysql8      Started     1.2s 
 ✔ Container lamp-redis       Started       1.2s 
 ✔ Container lamp-php84       Started     1.6s 
 ✔ Container lamp-phpmyadmin  Started     1.6s 

お見事。立ち上がりました。
で、Docker DesktopアプリをQuitして再度試すと、

# 一旦終了して
$ docker compose down

#デスクトップアプリを終了してから再度実行
ault       Removed                                                                                           0.3s 
$ docker compose up -d
unable to get image 'lamp-database': Cannot connect to the Docker daemon at unix:///Users/yngdrsk/.docker/run/docker.sock. Is the docker daemon running?

ということで、docker daemonが立ち上がってないと。
なるほど、OrbstockはDocker Desktopの代替なわけだから、コイツを立ち上げてないとダメってことね。

$ orb start
$ docker compose up -d

結局キーチェーンアクセスは求められたけど、docker hubのパスワードだと分かったので通ったww
初回起動はとても時間がかかるので、しばらくお茶でも飲んで待ちます。

 ✔ lamp-database              Built                          0.0s 
 ✔ lamp-webserver             Built                         0.0s 
 ✔ Network lamp_default       Created                0.1s 
 ✔ Container lamp-mysql8      Started                 0.6s 
 ✔ Container lamp-redis       Started                   0.5s 
 ✔ Container lamp-php84       Started                 0.8s 
 ✔ Container lamp-phpmyadmin  Started            0.9s

めでたし。

とりあえずブラウザでlocalhostにアクセス

マジ神。Docker神。
てなわけで、とりあえず今回はここまで。

次回はバーチャルホストとSSLまわりの設定をサクッとやろうと思います。
トラブルがなければすぐ終わっちゃうんですけどw

開発環境Docker,DockerDesktop,Orbstack

Posted by YANAGIDAryosuke