前回のエントリの続き...前回、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を有効してね!というメッセージが出て終了......とりあえず到達はしている模様......
とりあえず、環境は整備できたので、次はアプリケーション側に手を入れるナニカをやります。