Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP không thể phân giải tên vùng chứa mysql trong một số trường hợp nhất định

Vì bạn thiếu liên kết bạn db container với php. Khi bạn liên kết db với PHP, nó sẽ có thể truy cập được từ localhost của PHP.

Đây là tôi đã sửa đổi tập tin soạn thảo docker của bạn vì tôi thích núi cao ở khắp mọi nơi;). Và tôi sử dụng adminer và liên kết với db để kết nối verfiy thay vì kiểm tra mức mã. Vì tôi không có tệp docker php nên tôi đang tạo php:alpine chứa 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 

Sau đó, tôi đã cài đặt mysqli trong vùng chứa php

docker exec -it php ash

và chạy lệnh dưới đây

docker-php-ext-install mysqli;

Sau đó, tạo test.php

ở đây tên máy chủ là db . Lưu ý rằng tên máy chủ của bạn sẽ là tên vùng chứa db được liên kết đến php. if bạn ping db trong php container, nó sẽ ping db container.

    <?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";
?>

Bây giờ chạy tệp này trong vùng chứa php. Bạn có thể gắn kết và chạy mã php của mình nhưng đây là những gì tôi đã làm để thử nghiệm. Và tôi đã thử với tư cách là người dùng root.

php -f test.php

Và đây là adminer cũng liên kết với 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. mysql - Tạo hiệu suất hàng so với cột

  2. mySQL chọn mã zip trong phạm vi x km / dặm trong phạm vi của y

  3. Làm thế nào để tăng trong SQL bằng cách sử dụng một trình kích hoạt?

  4. Cơ sở dữ liệu bị hỏng với MariaDB:Bảng không tồn tại trong công cụ

  5. Thực thi các trình kích hoạt được lưu trữ trên SqlFiddle. Mysql