docker-composeでWordPressの環境を構築している際に「Can't start server : Bind on unix socket: Input/output error」が出たので、その対処法をここにメモしておきます。
「Can't start server : Bind on unix socket: Input/output error」の解消方法
エラーの内容
「$ docker-compose up -d」のコマンドを実行した時に以下のエラーが発生しました。
エラー内容Can't start server : Bind on unix socket: Input/output errorDo you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?Aborting
対処法
mysqlの「volumes」はローカルのフォルダをマウントすることが難しいらしい。💦
そのため、対処法としてDockerのボリューム(mysql-data)とコンテナの/var/lib/mysqlを紐づけるようにします。
docker-compose.ymlの修正前から修正後のように変更したら行けました。
・修正前:
services:
・・・・
mysql:
image: mysql:5.7
volumes:
- ./db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./db/mysql:/var/lib/mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test_db
- MYSQL_USER=test_user
- MYSQL_PASSWORD=test_password
command: --innodb-use-native-aio=0
・修正後:
services:
・・・・
mysql:
image: mysql:5.7
volumes:
- ./db/my.cnf:/etc/mysql/conf.d/my.cnf
- db_data:/var/lib/mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test_db
- MYSQL_USER=test_user
- MYSQL_PASSWORD=test_password
command: --innodb-use-native-aio=0
volumes:
db_data: {}
変更点
- 変更「- ./db/mysql:/var/lib/mysql 」 ⇒ 「 - db_data:/var/lib/mysql 」
- 追記
volumes:
db_data: {}
これで「$ docker-compose up -d」を実行したところ、正常にコンテナが作成されました。
さらに下図のようにDockerのボリュームが「wordpres_dev_db_data(<サービス名>_<ボリューム名>)」の名前で作成されました。
MySQLのデータはこの「db_data」ボリュームに保存されていく仕様のようです。
以上です。