docker-compose で postgres -> mysql に変えたら起動できなくなった
概要
docker-compose で postgres -> mysql に変えたら起動できなくなりました。
無事解決できたのでメモです。
起動時のエラー
$ docker-compose up -d $ docker-compose ps Name Command State Ports -------------------------------------------------------------------- xxxxx_db_1 docker-entrypoint.sh --cha ... Exit 1
Exit 1
になっている
$ docker-compose logs Attaching to xxxxx_db_1 db_1 | Initializing database db_1 | 2019-02-15T01:24:47.314821Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). db_1 | 2019-02-15T01:24:47.316718Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. db_1 | 2019-02-15T01:24:47.317165Z 0 [ERROR] Aborting db_1 |
[ERROR] --initialize specified but the data directory has files in it. Aborting.
とは...
postgres と mysql で同じ docker volume だったのが原因
postgres の時
version: '3' services: db: image: postgres:9.6 ports: - "5432:5432" volumes: - db-data:/var/lib/postgresql/data volumes: db-data:
mysql の時
version: '3' services: db: image: mysql:5.7 ports: - "3306:3306" volumes: - db-data:/var/lib/mysql volumes: db-data:
解決方法
da-data volume を削除すればおけ。
$ docker volume ls DRIVER VOLUME NAME 略 local xxxxx_db-data 略 $ docker volume rm xxxxx_db-data
Error response from daemon: remove xxxxx_db-data: volume is in use - [ハッシュ名]
とエラーが出て、volume を削除できない場合は
$ docker system prune $ docker volume rm xxxxx_db-data
確認
$ docker-compose up -d Creating network "xxxxx_default" with the default driver Creating xxxxx_db_1 ... done $ docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------- xxxxx_db_1 docker-entrypoint.sh --cha ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
いけた