Docker for Windows使ってて、結構ハマるので記載。
まず、proxy使ってる場合。Docker for Windowsのsettingsで下記を設定。
プロキシはこれで通るはず。
それでもネットワーク系のエラーが出る場合はsettingsのDockerEngineのjsonを下記の様にする。
上記の設定は色々あるっぽいですが、「insecure-registries」にdocker.io入れないと動かなかった。
この辺まではググれば大体出てくるはず。
で、ハマったエラー。
composeでproxyエラー
docker-compose buildでやると、下記の感じのエラーが出る。
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%2Fmariadb%3Apull&service=registry.docker.io": proxyconnect tcp: EOF
これ多分、Docker for Windowsがバグってると思う。どうもcompose通した時のdocker pullがプロキシ使ってないっぽい。何か別の設定あるのかしら?
さらに言うと、「FROM mariadb:10.6」これは通らないけど、「FROM mariadb」これは何故か通る。なんじゃらほい。。。
なので、Dockerfileとかcompose.ymlで指定されているバージョンのイメージを先にpullしておくと上手くいく。
# こんな風に書かれてたら FROM mariadb:10.6 # buildする前に手でpullしておく docker pull mariadb:10:6 # 必要なイメージを全部pullしたら後は普通にbuild docker-compose build
シェルスクリプトのエラー
実行すると、「/usr/bin/env: bash\r: そのようなファイルやディレクトリはありません」みたいなエラーになる事が結構ある。
これは改行コードがCRLFになってるから。LFのみに変えてあげないとだめ。
やり方は色々あると思いますが、vscode使ってるならvscodeでやるのが楽かも?
対象ファイル開いて、右下改行コードのところで変更できる。
というか、Gitの改行コードの設定をどうにかしないとホントはダメだと思うんだけど、上手いやり方が思いつかないというか調べてない。。。