Dockerの小ネタ集

カテゴリ: Programming

公開日: 2019-06-04 by kuro

Docker環境を使っていて気づいたこと、嵌ったことをまとめておきます。


DockerのMySQLに接続する時のDB_HOST設定

初出: 2019-06-04

Laravelなどで .envDB_HOST を設定する際、Docker環境では 127.0.0.1 ではなく サービス名(通常は mysql)を指定する必要があります。

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード

127.0.0.1 のままにしていると connection refused になります。コンテナ間の通信はDockerのネットワーク内でサービス名で解決されるためです。


Docker内でnpm関連エラーが出たとき

初出: 2019-06-03

数日ぶりにDockerを起動したら npm run dev が失敗するようになった経験です。

Error: EIO: i/o error, close

調べると node のバージョンマネージャーである n がなくなっていました。再インストールで解決しました。

# nがなくなっていることを確認
n latest
# bash: n: command not found

# nを再インストール
npm install -g n
n latest

インストール後、バージョンが古いままに見えた場合はコンテナに入り直すと反映されます。

exit
docker exec -it コンテナ名 bash

それでも解決しない場合は、コンテナを再起動すると直ることがあります。

docker-compose down
docker-compose up -d

rm -rf で消えないディレクトリ

初出: 2019-05-07

@type というディレクトリを rm -rf で削除しようとしても消えないことがありました。

これは使用中だったため削除できなかっただけで、VagrantやVSCodeなどを閉じてアクセスを断つと自然に消えてくれます。強制削除しようとせず、一度全てのアクセスを閉じてから確認するのが安全です。