
プロキシ環境だとどうしてもdocker-compose up -dやdocker compose buildなどのコマンドが通らないことがある。
root@yaju-PRIMERGY-TX1310-M3:~/crm-systrem# docker compose build
[+] Building 20.6s (3/3) FINISHED
=> [internal] load build definition from Dockerfile 0.3s
=> => transferring dockerfile: 257B 0.0s
=> [internal] load .dockerignore 0.4s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/mysql/mysql-server:8.0 20.2s
------ilding 20.5s (2/4)
> [internal] load metadata for docker.io/mysql/mysql-server:8.0: 0.7s
------ transferring dockerfile: 693B 0.0s
[+] Building 20.6s (4/4) FINISHED
=> [internal] load build definition from Dockerfile 0.7s
=> => transferring dockerfile: 693B 0.0s
=> [internal] load .dockerignore 0.5s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/composer:2.0 19.9s
=> ERROR [internal] load metadata for docker.io/library/php:8.0-fpm-bus 19.9s
docker.ioからcomposeやphpをインストールする処理が止まってLaravelのインストールが中断されている??
結論
/etc/systemd/system/docker.service.d/http-proxy.conf
に下記のように記載して解決した。
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080" "HTTPS_PROXY=http://proxy.example.com:8080" "NO_PROXY=localhost,127.0.0.1"
proxy.example.com:8080
は自分の環境のプロキシサーバーの置き換える。
ポイントは、2行目のEnvironment=
の行は改行せずにまとめて書くこと!!
自分はここを改行していたせいで通らなかった。
↓ダメな例
[Service]
Environment="HTTP_PROXY=10.255.254.11:8080"
Environment="HTTPS_PROXY=10.255.254.11:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.local"
上記のファイルやディレクトリは元々はないと思われるので、ええ感じに作るべし。
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
ファイルを編集したら
sudo systemctl daemon-reload
sudo systemctl restart docker
を叩いて反映させてね。
そしらたdocker compose buildなり、docker compose-build、docker-compose up -d docker compose up-d などのコマンドが通るようになるはず!
それでもダメなら?
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
export no_proxy=localhost,127.0.0.1
を叩く。
同じく上記は自分の環境のプロキシに置き換えてね。
ほんで、
sudo systemctl daemon-reload
sudo systemctl restart docker
を叩いて反映させてね。