Dockerで環境構築を行ったが、MySQLに接続できない

いつもお世話になっております。
Windows上でDockerを利用してbaserCMSの開発環境を構築してみたところ、MySQLのコンテナが上手く起動しない現象に遭遇してしまいました。
コンテナ起動直後すぐに閉じてしまっているように思えます。
何か解決策をご存じでしたらお教えいただきたいです。

作業時の手順

  1. 下記からダウンロードしてローカルに展開
    https://github.com/baserproject/basercms

  2. docker/README.mdに記載されている流れに沿ってインストールを行い、baserCMSを起動する。

  3. baserCMSのインストール|ステップ3でデータベース情報を設定し、接続テストを行う
    →下記エラーが表示される

データベースへの接続でエラーが発生しました。データベース設定を見直してください。
サーバー上に指定されたデータベースが存在しない可能性が高いです。
  1. 閉じたコンテナにdocker commitdocker runを使って入る
docker commit bc-db exitdb
docker run --rm -it exitdb sh

※bc-db・・・落ちたmySQLコンテナ

  1. コンテナ内でMySQLにログインしようとすると下記エラーが表示される
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

作業環境

OS:Windows10
baserCMS:4.2.4

こんにちは

Docker for windowsでmysqlを使用する場合、権限の問題で"/var/lib/mysql"のマッピングができないので、Docker Volumeを使用する必要があるみたいです。
(Volumeを消すとmysqlのデータが消えるのでご注意ください。)


以下の設定で動作することを確認しました。
volumes付近を2箇所変更してます。

volumes:
    db-volume: # for windows
#  sync-volume:
#    external: true

services:
  bc-db:
    container_name: bc-db
    image: mysql/mysql-server:5.7
    volumes:
      # - ./volumes/mysql:/var/lib/mysql
      - db-volume:/var/lib/mysql # for windows
      - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "root"
      MYSQL_DATABASE: "basercms"
    command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
1 Like

早速のご返信ありがとうございます。
お教えいただいた通りに変更して試したところ、無事インストールを完了することができました。
大変助かりました。ありがとうございます。

1 Like