
一昔前の「Apache+PHP+Mysql」構成をサーバーレスに対応したとき、はまったメモ
docker-compose.ymlの場合
wwwコンテナから、dbコンテナのmysql を接続する場合、
$ ping mysql-name で通る。
version: “3”
services:
www:
container_name: php-${VerNo}
image: php/apps:${VerNo}
ports:
– 80:80
db:
container_name: mysql-name
image: sys/mysql-name
environment:
MYSQL_HOST: mysql-name
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: dbname
MYSQL_USER: dbuser
MYSQL_PASSWORD: pass
MYSQL_PWD: pass
TZ: ‘Asia/Tokyo’
ports:
– ‘3306:3306’
ただし、mysqlにつなげるときは、以下の対応が必要(セキュリティ的には?)
# mysql -u dbuser -pap -h mysql-name
MySQL [(none)]>
mysql> SELECT User, Host, Plugin FROM mysql.user;
+——————+———–+———————–+
| User | Host | Plugin |
+——————+———–+———————–+
| dbuser | % | mysql_native_password |
| root | % | caching_sha2_password |
| anpiusr | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+——————+———–+———————–+
7 rows in set (0.00 sec)
+——————+———–+———————–+
| User | Host | Plugin |
+——————+———–+———————–+
| dbuser | % | mysql_native_password |
| root | % | caching_sha2_password |
| anpiusr | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+——————+———–+———————–+
7 rows in set (0.00 sec)
AWS-ECS(Fargate)の場合
問題はAWS側、同様にできるかと思ったが、コツがあった♫
どうも、Fargateは、1つのEC2内にコンテナが同居している感じ、”127.0.0.1“でつながった。
# mysql -u anpiusr -pap -h mysql-name
ERROR 2005 (HY000): Unknown MySQL server host ‘mysql-name’ (2)
# mysql -u anpiusr -pap -h localhost
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
# mysql -u anpiusr -pap -h 127.0.0.1
MySQL [(none)]>