プロキシ環境でどうしてもdockerコンテナが立ち上がらない

プロキシ環境だとどうしても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

を叩いて反映させてね。

無制限に質問可能なプログラミングスクール!

万が一転職できない場合は、転職保障全額返金できるコースもあり!!

無制限のメンター質問対応

 

DMMウェブキャンプでプログラミングを学習しませんか?

独学より成長スピードをブーストさせましょう!

 

まずは無料相談から!

おすすめの記事