徳丸本の実習環境をDocker Desktop for windowsを使用し構築してみた
使用環境など
- Windows10
- Docker Desktop for windows 4.15.0
- Ubuntu18.04 LTS
- WSL2
- Windows Terminal
環境構築の経緯
僕自身はVMで環境構築を実施していたが、新人教育で環境構築を実施させると何かしら問題が起こるので、dockerであればすぐに環境構築できるので今後はdockerに変更しようかな思い、まずは自分で環境構築を実施したがエラーとなったので、解決策をメモ程度に記載しています。
※原因については、現状は正直よくわかっておらず、取り急ぎ解決策を記載しています。
時間があるときに調べます
実施したこと
徳丸さんの徳丸本2版の実習環境をDockerに移植した話に従い、ファイルをダウンロードする。
解凍(unzip)し、Cドライブ配下にworkというフォルダ(任意のフォルダでOK)を作成して解凍したファイルを配置する。
docker-compose.ymlがあるフォルダまで遷移して、下記コマンドを実行する
root@test:/mnt/c/work/wasbook-docker# docker compose up -d
下記画像のエラーとなった。
詳細のエラーとみてみると、fetchでトークンの取得に失敗しているのかな?
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch anonymous token: Get "https://auth.docker.io/token?scope=repository%3Alibrary%2Ftomcat%3Apull&service=registry.docker.io": dial tcp: lookup auth.docker.io on 192.168.240.1:53: read udp 192.168.253.215:39342->192.168.240.1:53: i/o timeout
Burp等のローカルプロキシなど設定をしているかと思ったが、設定はしていなかった。
ちなみにDocker DesktopのsettingのDocker Engineは下記の通りに初期から変更してある。
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"debug": false,
"experimental": false,
"features": {
"buildkit": false
},
"insecure-registries": [
"docker.io"
],
"registry-mirrors": []
}
解決方法
各フォルダのDockerfileに下記のようなFROMから始まる記述がある。
FROM php:8.1.13-apache-bullseye
これが上手く通らない… Docker Desktopの仕様?
docker composeする前に、先に各イメージをpullしておくと上手くいった。
docker pull php:8.1.13-apache-bullseye
apache、db、mail、nginx、tomcat の各フォルダのDockerfileの内容を確認し、
同様にイメージを PULL する。その後 docker compose up -d を実行すると問題なく成功した。
ついでに、アクセスできるかまで確認しておく。
Docker Desktopにアクセスし、wasbook-dockerを起動する。
Apacheのportが13128になっているのでhttp://127.0.0.1:13128/にアクセスすると、目次画面が表示されることが確認できた
Discussion
ありがとうございます。このような内容は本当に助かります。原因等については可能なら追跡してみたいと思います。
ところで、http://127.0.0.1:13128/ で見えているのはPROXYですので、直接アクセスするのではなく、READMEあるいは私の記事の内容に従いPROXY設定してください。
コメントありがとうございます。環境依存(Docker Desktopの設定も少し変更済)かもですので、こちらも別端末等で確認はしてみたいと思っております。
ご指摘ありがとうございます。docker compose up -dが上手くいくかまでしか試しておらずそこまで読めておりませんでした。確認次第修正、追記しておきます。