sql >> Database >  >> RDS >> Mysql

PHP kan onder bepaalde omstandigheden de mysql-containernaam niet oplossen

Omdat je links mist je db-container met php. Als je db aan PHP koppelt, is het toegankelijk vanaf de localhost van PHP.

Hier heb ik je docker-compose-bestand aangepast omdat ik overal alpine leuk vind;). En ik gebruik adminer en link met db om de verbinding te verifiëren in plaats van controle op codeniveau. Omdat ik je php docker-bestand niet heb, maak ik php:alpine die php7 bevat.

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 

Toen installeerde ik mysqli in php-container

docker exec -it php ash

en voer het onderstaande commando uit

docker-php-ext-install mysqli;

Maak dan test.php

hier is de servernaam db . Merk op dat uw servernaam zal zijn wat de db-containernaam is, wat een link is naar php.if u ping db in php container zal het db container pingen.

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

Voer dit bestand nu uit in php-container. U kunt uw php-code koppelen en uitvoeren, maar dit is wat ik deed om te testen. En ik heb het geprobeerd als rootgebruiker.

php -f test.php

En hier is de beheerder die ook linkt met db



  1. Hoe een MySQL-schema met gegevens exporteren?

  2. Databasemodellen voor e-commerce Deel 1:De nieuwsbrief

  3. Voer een SQL-query uit bij het opstarten van de MySQL-service

  4. MySQL 'Order By' - alfanumeriek correct sorteren