Как связать mysql и php внутри разных контейнеров?

У меня было два контейнера с названиями «mysql-1» и «убунту-1».

И я соединяю друг друга

docker run -p 127.0.0.1:3010:80 -itd --link mysql-1 --name=ubuntu-1 my-ubuntu-image:latest

Обратите внимание, что мой-ubuntu-образ уже имеет nginx и php, и я изменил config внутри убунту-1, как показано ниже:

дефолт

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html/test/;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
                try_files $uri /index.php =404;
                fastcgi_pass 127.0.0.1:9999;
                fastcgi_index index.php;
                fastcgi_buffers 16 16k;
                fastcgi_buffer_size 32k;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                #fixes timeouts
                fastcgi_read_timeout 600;
                include fastcgi_params;
        }
}

www.conf

listen = 127.0.0.1:9999

Это работает, когда я пытаюсь запустить простой файл php без mysql. Но теперь я пытаюсь запустить файл php, как показано ниже:

<?php
    $servername = "localhost";
    $username = "root";
    $password = "123456";

    // Create connection
    $conn = new mysqli($servername, $username, $password);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    echo "Connected successfully";
?>

Как подключиться к контейнеру mysql-1?


Переменные среды внутри ubuntu-1 выглядят следующим образом:

MYSQL_1_PORT_33060_TCP=tcp://172.17.0.4:33060
MYSQL_1_PORT_33060_TCP_PORT=33060
MYSQL_1_PORT_3306_TCP_ADDR=172.17.0.4
HOSTNAME=632b415c540e
OLDPWD=/root
MYSQL_1_ENV_MYSQL_ROOT_PASSWORD=123456
PWD=/var/www/html/test
HOME=/root
MYSQL_1_PORT_3306_TCP_PORT=3306
MYSQL_1_ENV_MYSQL_MAJOR=8.0
MYSQL_1_ENV_GOSU_VERSION=1.7
MYSQL_1_PORT_3306_TCP_PROTO=tcp
MYSQL_1_PORT_33060_TCP_ADDR=172.17.0.4
MYSQL_1_ENV_MYSQL_VERSION=8.0.12-1debian9
MYSQL_1_PORT_33060_TCP_PROTO=tcp
TERM=xterm
SHLVL=1
MYSQL_1_NAME=/ubuntu-4/mysql-1
MYSQL_1_PORT_3306_TCP=tcp://172.17.0.4:3306
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MYSQL_1_PORT=tcp://172.17.0.4:3306
_=/usr/bin/env

Возможный дубликат Docker Подключение PHP-контейнера к MySQL

David Maze 05.09.2018 12:06

Вы пытались использовать имя контейнера вашего mysql в качестве хоста вместо localhost?

lvthillo 05.09.2018 13:20

@lvthillo Да, я пробовал, но не работает .....

jimmy 05.09.2018 14:59

Развернуты ли они внутри одной и той же сети мостов?

lvthillo 05.09.2018 15:08
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
4
42
0

Другие вопросы по теме