前提・実現したいこと
docker-composeを利用してphp、nginx、mysqlの環境を作りたい
ここに質問の内容を詳しく書いてください。
現状docker-composeを利用してnginxとPHPを利用できる環境を作成するところまではできています。
そこからmysqlに接続しようと調べましたがやり方がわからずに一週間くらい止まっています。
どなたか助けてください。
発生している問題・エラーメッセージ
docker-compose up -dでnginxとphpとmysqlが動いていることは確認できています。
mysqlにexecで接続後テーブルを作成してphp側で接続をできるかテストしたところうまくいかないです。
設定を変えてみたりして以下のエラーが出てから進んでいないです。
1. SQLSTATE[HY000] [2002] Connection refused 2. MySQL server has gone away
該当のソースコード
docker-compose.yml
version: '2' services: sqlbox: container_name: sqlbox image: busybox volumes: - ./data/mysql:/var/lib/mysql/data networks: - dev-net wwwbox: container_name: wwwbox image: busybox volumes: - ./data/www:/var/www/html networks: - dev-net dev-nginx: container_name: dev-nginx build: ./nginx ports: - "80:80" links: - dev-php volumes: - ./nginx/server.conf:/etc/nginx/conf.d/server.conf volumes_from: - wwwbox networks: - dev-net dev-php: container_name: dev-php build: ./php7 links: - dev-mysql volumes: - ./php7/php.ini:/usr/local/etc/php/php.ini volumes_from: - wwwbox networks: - dev-net depends_on: - "dev-mysql" dev-mysql: container_name: dev-mysql image: mysql:5.6 volumes: - ./mysql:/etc/mysql/conf.d ports: - "5432:5432" volumes_from: - sqlbox networks: - dev-net environment: - "MYSQL_ROOT_USER=roottest" - "MYSQL_ROOT_PASSWORD=rootpass" - "MYSQL_ALLOW_EMPTY_PASSWORD=no" - "MYSQL_DATABASE=test" - "MYSQL_USER=test" - "MYSQL_PASSWORD=passpass" - "TZ=Asia/Tokyo" networks: dev-net: driver: bridge
index.php
<?php $hostname = "192.168.99.100"; $username = "test"; $password = "passpass"; $dbname = "test"; $char = "utf8"; $port = "5432"; try{ //DBを選択してコネクト $db_perm = array( PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ); $link = new PDO('mysql:host='.$hostname.'; port='.$port.'; dbname='.$dbname.'; charset='.$char , $username, $password, $db_perm); //SELECT文を発行 $result = $link->query('select ID,Name from member_tb where Name = "Mako Ishino"'); //ヒット数を表示 $duplicate_num = $result->rowCount(); echo $duplicate_num ." 件該当しました。<br>\n"; //接続をクローズ $result = null; $link = null; } catch( PDOException $e) { $db_error = $e->getMessage(); error_log($db_error); print 'DBエラー: ' . $db_error .'<br>' ; die($db_error); }
試したこと
index.phpのhostやportの設定の変更等
補足情報(FW/ツールのバージョンなど)
centos 7
php 7.2
mysql 5.6
docker 18.01.0-ce
windows10 home
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。