sql >> Databáze >  >> RDS >> Mysql

PHP nemůže za určitých okolností vyřešit název kontejneru mysql

Protože vám chybí propojení jste db kontejner s php. Když propojíte db s PHP, bude přístupný z localhost PHP.

Zde jsem upravil váš soubor docker-compose, protože mám rád alpine všude;). A místo kontroly úrovně kódu používám správce a propojení s db k ověření připojení. Protože nemám php docker soubor, tak vytvářím php:alpine, který obsahuje 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 

Poté jsem nainstaloval mysqli do kontejneru php

docker exec -it php ash

a spusťte pod příkazem

docker-php-ext-install mysqli;

Poté vytvořte test.php

zde je název serveru db . Všimněte si, že název vašeho serveru bude stejný jako název kontejneru db, který je odkazem na php.pokud ping db v kontejneru php bude ping db kontejner.

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

Nyní spusťte tento soubor v kontejneru php. Můžete připojit a spustit svůj php kód, ale toto jsem udělal pro testování. A zkusil jsem to jako uživatel root.

php -f test.php

A zde je adminer, který také odkazuje na db



  1. Jak exportovat data ve formátu CSV z SQL Server pomocí sqlcmd?

  2. Jak poskytnout klientovi API 1 000 000 výsledků databáze?

  3. JDBC PreparedStatement má za následek chybu syntaxe MySQL

  4. Aktualizace MySQL, pokud je hodnota větší než aktuální hodnota