Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP tidak dapat menyelesaikan nama wadah mysql dalam keadaan tertentu

Karena Anda kehilangan tautan Anda db wadah dengan php. Saat Anda menautkan db dengan PHP, itu akan dapat diakses dari localhost PHP.

Ini saya memodifikasi file docker-compose Anda seperti yang saya suka alpine di mana-mana;). Dan saya menggunakan adminer dan menautkan dengan db untuk memverifikasi koneksi alih-alih memeriksa level kode. Karena saya tidak memiliki file buruh pelabuhan php, jadi saya membuat php:alpine yang berisi 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 

Kemudian saya menginstal mysqli di wadah php

docker exec -it php ash

dan jalankan perintah di bawah ini

docker-php-ext-install mysqli;

Kemudian buat test.php

di sini nama server adalah db . Perhatikan bahwa nama server Anda adalah nama wadah db yang ditautkan ke php.jika Anda ping db dalam wadah php ia akan melakukan ping wadah 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";
?>

Sekarang jalankan file ini dalam wadah php. Anda dapat memasang dan menjalankan kode php Anda, tetapi inilah yang saya lakukan untuk pengujian. Dan saya mencoba sebagai pengguna root.

php -f test.php

Dan ini admin yang juga terhubung dengan 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. Bagaimana cara mendapatkan id kenaikan otomatis berikutnya di mysql

  2. Apa konvensi penamaan yang tepat untuk FK MySQL?

  3. Mengisi database tanpa perintah memuat data

  4. Perintah Administrasi Basis Data Dasar MySQL – Bagian I

  5. kesalahan mysql 2005 - Host server MySQL tidak dikenal 'localhost' (11001)