Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP не може да разреши името на контейнера mysql при определени обстоятелства

Тъй като ви липсва връзка вие db контейнер с php. Когато свържете db с PHP, той ще бъде достъпен от localhost на PHP.

Ето аз промених вашия файл docker-compose, тъй като харесвам alpine навсякъде;). И аз използвам администратор и връзка с db за проверка на връзката вместо проверка на ниво код. Тъй като нямам php docker файл, създавам php:alpine, който съдържа php7.

version: "3"
services:
  nginx:
    image: nginx:1.13-alpine
    container_name: nginx
    ports:
      - "8081:80"
    command: nginx -g "daemon off;"
  db:
    image: mysql:5.5
    environment:
      MYSQL_ROOT_PASSWORD: example

  php:
    image: php:alpine
    container_name: php
    tty: true
    links:
     - db 
  adminer:
    image: adminer
    container_name: adminer
    ports:
      - 8080:8080
    links:
     - db 

След това инсталирах mysqli в php контейнер

docker exec -it php ash

и изпълнете командата по-долу

docker-php-ext-install mysqli;

След това създайте test.php

тук името на сървъра е db . Имайте предвид, че името на вашия сървър ще бъде това, което е името на контейнера db, което е връзка към php.if ping db в php контейнер той ще ping db контейнера.

    <?php
$servername = "db";
$username = "root";
$password = "example";

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

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

Сега стартирайте този файл в php контейнер. Можете да монтирате и стартирате вашия php код, но това е, което направих за тестване. И аз се опитах като root потребител.

php -f test.php

И тук е администратор, който също се свързва с db



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 'IF' в израза 'SELECT' - изберете изходна стойност въз основа на стойностите на колоните

  2. как работи индексирането на B-дърво в mysql

  3. Преобразуване на mysql колона от INT в TIMESTAMP

  4. Броят дни в периода от време?

  5. Вмъкване на променливи MySQL с помощта на Python, не работи