Не удается подключиться к моему контейнеру MYSQL через SequelPro и другой мой контейнер PHP - PullRequest
0 голосов
/ 30 сентября 2018

Я новичок в докере.Я могу войти в мой MySQL контейнер и получить доступ к базе данных.Но я не могу получить к нему доступ из своего контейнера PHP, а также при попытке подключения из клиента mysql (sequelPro).

PHP DockerFile

FROM php:7.0-apache
RUN apt-get update && \
    apt-get install -y libfreetype6-dev libjpeg62-turbo-dev && \
    docker-php-ext-install mysqli && \
    docker-php-ext-install mbstring && \
    docker-php-ext-configure gd --with-freetype-dir=/usr/include/ -- 
    with-jpeg-dir=/usr/include/  &&  \
    docker-php-ext-install gd
COPY ./php.ini /usr/local/etc/php/
RUN a2enmod rewrite
RUN service apache2 restart

docker-compose.yml

version: '2'

services:
  mysql:
     image: mysql:5.7
     ports:
         - "4407:3306"
     volumes:
         - ./db:/var/lib/mysql
     environment:
         - MYSQL_ROOT_PASSWORD=root
         - MYSQL_DATABASE=shutterfly
shutterfly:
    build: ./shutterfly
    volumes:
         - ./shutterfly:/var/www/html/
    depends_on:
         - mysql
    restart: always
    links:
         - mysql
    ports:
         - "8000:80"

CodeIgnitor дает мне эту ошибку:

Severity: Warning
Message: mysqli::real_connect(): (HY000/2002): Connection refused
Filename: mysqli/mysqli_driver.php
Line Number: 201
Backtrace:
File: /var/www/html/index.php
Line: 315
Function: require_once

Unable to connect to your database server using the provided settings.
Filename: core/CodeIgniter.php
Line Number: 518

В моем Database.php Iесть

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
'dsn'   => '',
'hostname' => "0.0.0.0",
'database_user' => 'root',
'database_password' => 'root',
'databasename' => 'shutterfly',
'port' => '4407',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);

Можете ли вы дать мне знать, что мне не хватает?

1 Ответ

0 голосов
/ 30 сентября 2018

Ваш порт в Database.php должен быть 3306, а имя хоста должно быть mysql.Когда Docker устанавливает соединение внутренне, используя свою сеть, вы должны указать внутренний порт, а не открытый.

Если вы хотите использовать незащищенный порт 4407, вы должны использовать фактический IP-адрес вашего компьютера в имени хоста.Не localhost / 0.0.0.0.Когда вы используете их из контейнера Docker, это локальный хост для контейнеров.Не от хозяина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...