前回のエントリの続き...前回、macOS版のDocker Desktopではnetwork_mode
にhost
を指定すると、Docker Desktopが起動しているLinuxの仮想マシンがホストになってしまうため、macOS側のブラウザではトップページへアクセスできないと書いた。
というわけで、network_mode
からhost
の指定をすべて削除した。
networkの作成
変更した箇所はリンク先のリポジトリに書かれている。
docker-compose.yml
- ファイル名
docker-compose.yml
は、今では非推奨になっていて、compose.yaml
が推奨になっているので、ファイル名を変更 compose.yaml
では、フォーマットのversion
指定は必要がないと公式ドキュメントに書かれていたので、削除- 新しく
isucon-tier
というネットワークを作成し、コンテナはすべてそこに属するように修正した - すべての
host
指定を削除した links
をやめて、depends_on
に修正
nginxの設定変更
- IPアドレスが、他のサービスなのに127.0.0.1で指定されている箇所について、名前解決可能なFQDN(ここではサービス名)に修正 networkを新しく作るとサービス名、コンテナ名などでの名前解決が可能となる
data/Makefileの修正
data/Makefile
の中でmysqlが同じホストで動いている前提になっているので、127.0.0.1
をすべてホスト名(service名)としてのmysql
に変更。
また、portも13306になっている箇所は、すべて元の3306に修正。
その後、初期データのビルドを行う。
$ cd /home/isucon/data
$ make build-for-docker-compose
ベンチの実行
nslookupで、nginxが動いているサーバのIPアドレスを取得
$ nslookup nginx ... Non-authoritative answer: Name: nginx Address: 172.18.0.4
$ go run cmd/bench/main.go -target-url https://t.isucon.dev --target-addr 172.18.0.4:443
成功!
ベンチマークの数値は特に変わらず(当たり前)
ブラウザからのアクセス
/etc/hosts
に、127.0.0.1
へadmin.t.isucon.dev
指定でアクセスできるように追記
ブラウザを起動し、https://admin.t.isucon.dev
へ接続...サーバ証明書の期限が切れていた...終了...
curlは、証明書を検証しないオプションがあるので、それを指定して実行
$ curl -k https://admin.t.isucon.dev
JavaScriptが必要なサイトなので、JavaScriptを有効してね!というメッセージが出て終了......とりあえず到達はしている模様......
とりあえず、環境は整備できたので、次はアプリケーション側に手を入れるナニカをやります。