実現したいこと
ここしばらくDockerを頑張っていまして通常のLAMP的な環境だったり、Laravelのsailとかの環境はだいたい思い通りになるようになってきました。
お客さん側で古いWEBアプリがあったりでPHPのバージョン違いが多発するのでWSL2とDockerで切り替えて動作できる方が楽だとわかったのでWEBアプリ系はDockerへ移行させていってます。
次の段階で今までローカルの開発環境ではWindowsアプリ(C#)からXAMPPのMySQLへつないで開発していたのですが、XAMPPを自分の環境では廃止してMySQLとPhpMyAdmin部分をDockerで専用コンテナを作ってそこへC#アプリ用のDBを全部移行したいと思いました。
前提
Windows11でdocker-desktopを利用しています。
発生している問題・エラーメッセージ
C#での接続部分は接続文字列だけで言えば
userid=sail;password=password;database=app_db;Host=mysqldb;Port=3306;Pooling=True;Convert Zero Datetime=True;Convert Zero Datetime=True;SslMode=none;Character Set=utf8
今までとuserid
password
database
Host
を変更しただけです。
エラーとしては
MySql.Data.MySqlClient.MySqlException: 'Unable to connect to any of the specified MySQL hosts.'
と出ているのでホストへ接続できないということだと思います。
Dockerのコンテナ側はPhpMyAdminも起動して立ち上がってDBへも接続しているので起動の確認だけは取れています。
それ自体のIDやPWが違うということは無いのだと思っています。
ホスト名が怪しかったのですがphpmyadmin自体はlocalhost:8080で起動しますが、mysqlへの接続ホストは「mysqldb」を記述するので、でmysqldbとしてdbサーバー名を定義しているのだと思いましたのでC#側からのホスト名はmysqldbとしました(localhostでもmysqldbでも今は接続出来ないのですが・・)
ですのでDocker側で動いているMySQL自体に外部公開するような処置をしないといけないのか?とは思いましたが情報が交錯していてわかりませんでした・・・
何か情報をいただけたらと思います。
補足情報
docker-compose.ymlはこの様になっています
docker
1version: '3' 2 3services: 4 mysqldb: 5 image: mysql:5.7 6 container_name: mysql57_container 7 environment: 8 MYSQL_ROOT_PASSWORD: P@ssw0rd 9 MYSQL_USER: mysqluser 10 MYSQL_PASSWORD: mysqlpassword 11 TZ: 'Asia/Tokyo' 12 volumes: 13 - ./docker/db/data:/var/lib/mysql 14 - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf 15 - ./docker/db/sql:/docker-entrypoint-initdb.d 16 ports: 17 - 3306:3306 18 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 19 phpmyadmin: 20 image: phpmyadmin/phpmyadmin 21 22 environment: 23 PMA_ARBITRARY: 1 24 PMA_HOST: mysqldb 25 # PMA_USER: root 26 # PMA_PASSWORD: P@ssw0rd 27 MEMORY_LIMIT: 256M 28 UPLOAD_LIMIT: 128M 29 30 ports: 31 - 8080:80 32 depends_on: 33 - mysqldb 34 volumes: 35 - ./docker/phpmyadmin/sessions:/sessions
といった感じです。
ユーザー名やパスワードはここに載せるために変えてあります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー