sql >> Databasteknik >  >> RDS >> Mysql

PHP kan inte lösa mysql containernamn under vissa omständigheter

Eftersom du saknar länkning du db-behållare med php. När du länkar db med PHP kommer den att vara tillgänglig från PHPs lokala värd.

Här är jag modifierade din docker-compose-fil eftersom jag gillar alpin överallt;). Och jag använder adminer och länkar med db för att verifiera anslutningen istället för att kontrollera kodnivån. Eftersom jag inte har din php docker-fil så skapar jag php:alpine som innehåller 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 

Sedan installerade jag mysqli i php-behållare

docker exec -it php ash

och kör under kommandot

docker-php-ext-install mysqli;

Skapa sedan test.php

här är servernamnet db . Observera att ditt servernamn kommer att vara det som är db containernamn som är länk till php.om du ping db i php-behållaren kommer den att pinga db-behållare.

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

Kör nu den här filen i php-behållaren. Du kan montera och köra din php-kod men det här är vad jag gjorde för att testa. Och jag försökte som root-användare.

php -f test.php

Och här är adminer som också länkar till db



  1. ScaleGrid höjer Growth Equity Round från Spotlight Equity Partners för att påskynda expansion och ytterligare investera i produktfärdplan

  2. Komma igång med Shareplex på Windows på AWS, del 2

  3. Implementering av failover i MS SQL Server 2017 Standard

  4. Släpps också indexen om du släpper en tabell i MySQL?