SQLの勉強
1番、参考になる記事
Docker Hubのオフィシャルイメージを使ったLAMP環境(Apache+PHP+MySQL)構築 - Qiita
MySQLだけをコンテナで動かす
取ってくる
docker search mysql
docker pull mysql
使い方を調べた。
世界一分かりやすいのではないかと思われるサイト
Dockerの公式MySQLイメージの使い方を徹底的に解説するよ · DQNEO起業日記
以下のコマンドで動く
docker run --name mysqld -p 3306:3306 -p 33060:33060 -e MYSQL_DATABASE=mydb -e MYSQL_USER=test01 -e MYSQL_PASSWORD=secret01 -e MYSQL_ROOT_PASSWORD=testing00 -d mysql
コマンドラインは以下から
docker run --link mysqld:mysql -it --rm mysql bash
docker run --link mydb -it --rm mysql bash
ターミナル接続は以下から
mysql -u root -ptesting01 -h $MYSQL_PORT_3306_TCP_ADDR mydb
動いているかは以下で確認。
docker ps
Macでポートが開放は以下で確認
sudo lsof -i -P | grep "LISTEN"
PHP-ApacheでMySQL系クラスを使うためにはPHP-ApacheでMySQL系クラスを使う
docker-composeの使い方
Docker Compose で PHP 7.0 の開発環境を構築する - Qiita
主な手順
docker-compose build
docker-compose up -d
これをまとめてdocker-compose up -d --build
で片付け
PHPからMySQLに接続
Docker Composeを使ってLAMP環境を立ち上げる - Qiita
エラーの対処法
mysqliが無いって怒られた
DockerfileでRUNを書いて、生成したコンテナをdocker-compose.ymlに食わせて生成してる
docker build -t php:custom .
ソケットファイル系っぽいエラー
Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /var/www/html/index.php on line 13
これを参考にしてみる
mysqliのコンストラクタで"No such file or directory"のエラー - k-holyのPHPとか諸々メモ
dockerでphpのmysqliクラス使って通信しようとしたけどエラー出た。から、原因調べたらmysqli.default_socket がno valueだった
どうもデフォルトはnullだから正常な挙動みたい。
明示的に示さない限りはエラーが起きる可能性があるみたい。