概要
docker上でnginx, php, mysql, phpmyadmin, CodeIgniterが動作する環境を構築しようと考えています。
nginx, php, mysql, phpmyadminのそれぞれの動作の確認はできているのですが、php側からmysqlに接続することができません。ポートやmysqlのログイン情報などを変更し、試行錯誤しましたが、php上でmysqli(), mysql_connect, PDOのどれもが、正しく接続できません。下記コードに誤りがございましたら、ご教授をよろしくお願いします。
##ソースコード
docker-compose.yml
version: '3' services: nginx: container_name: cp_nginx image: nginx:1.13.5-alpine build: ./nginx ports: - "8080:80" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ./public_html:/var/www/public_html links: - mysql - php php: container_name: cp_php build: context: ./ dockerfile: ./php/Dockerfile image: php:7-fpm-alpine volumes: - ./php/php.ini:/etc/php/php.ini - ./public_html:/var/www/public_html - ./app/application:/var/www/application - ./app/system:/var/www/system links: - mysql mysql: container_name: cp_mysql image: mysql:5.7 volumes: - ./mysql/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: cp_db pma: container_name: cp_phpmyadmin image: phpmyadmin/phpmyadmin:4.6.4-1 ports: - "5000:80" environment: - PMA_ARBITRARY=1 - PMA_HOST=mysql - PMA_USER=root - PMA_PASSWORD=password links: - mysql depends_on: - mysql volumes: - ./phpmyadmin/sessions:/sessions
php/Dockerfile
FROM php:7-fpm RUN apt-get update RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli RUN mkdir -p /etc/php/ RUN mkdir -p /var/www/public_html/ RUN mkdir -p /var/www/application RUN mkdir -p /var/www/system ADD ./public_html /var/www/public_html ADD ./app/application /var/www/application ADD ./app/system /var/www/system RUN ls /var/www/public_html/
nginx/Dockerfile
FROM nginx:latest RUN echo "now building..." RUN mkdir -p /etc/nginx/conf.d
index.php
<?php $mysqli = new mysqli('127.0.0.1:80', 'root', 'password', 'cp_db'); if (!class_exists('mysqli')) { echo 'We don\'t have mysqli class!!!'; } else { echo 'Phew we have it!'; } ?>
##実行方法
$docker-compose up -d $docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4150b540a57f nginx:1.13.5-alpine "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp cp_nginx 7d36ef85271a php:7-fpm-alpine "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 80/tcp, 8080/tcp, 9000/tcp cp_php 47305ce0aa95 phpmyadmin/phpmyadmin:4.6.4-1 "/run.sh" 2 minutes ago Up 2 minutes 0.0.0.0:5000->80/tcp cp_phpmyadmin 130c05ec5d12 mysql:5.7 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp, 33060/tcp cp_mysql
ブラウザでhttp://127.0.0.1:8080にアクセス
##実行結果
Warning: mysqli::__construct(): (HY000/2002): Connection refused in /var/www/public_html/index.php on line 12 Phew we have it!
##試したこと
phpmyadmin側からmysqlのログイン情報の変更(user=> root, password=> password) index.phpの2行目のホスト名をlocalhost, localhost:8080, localhost:5000, localhost:3306, localhost:80, 127.0.0.1, 127.0.0.1:8080, 127.0.0.1:5000, 127.0.0.1:3306, 127.0.0.1:80, 0.0.0.0, 0.0.0.0:8080, 0.0.0.0:5000, 0.0.0.0:3306, 0.0.0.0:80へ変更
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/01 07:30
2019/05/01 08:59
2019/05/07 12:20