コンテンツにスキップ

SQLの勉強

1番、参考になる記事

Docker Hubのオフィシャルイメージを使ったLAMP環境(Apache+PHP+MySQL)構築 - Qiita

MySQLだけをコンテナで動かす

取ってくる

docker search mysql
docker pull mysql

使い方を調べた。

library/mysql - Docker Hub

世界一分かりやすいのではないかと思われるサイト

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系クラスを使う

library/php - Docker Hub

DockerのPHPでMySQL拡張モジュールを使う

docker-composeの使い方

Docker Compose で PHP 7.0 の開発環境を構築する - Qiita

主な手順

  1. docker-compose build
  2. docker-compose up -d

これをまとめてdocker-compose up -d --buildで片付け

PHPからMySQLに接続

PHP: どの API を使うか - Manual

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だから正常な挙動みたい。

PHP: 実行時設定 - Manual

明示的に示さない限りはエラーが起きる可能性があるみたい。

http://easyramble.com/php-mysql-connect-socket-error.html

http://php.net/manual/ja/configuration.file.php