sql >> データベース >  >> RDS >> Mysql

PHPは特定の状況下でmysqlコンテナ名を解決できません

    リンクがないため phpでコンテナをdbします。 dbをPHPにリンクすると、PHPのローカルホストからアクセスできるようになります。

    これが私がどこでもアルパインが好きなのであなたのdocker-composeファイルを変更したことです;)。そして、コードレベルのチェックの代わりに、adminerとdbとのリンクを使用して接続を確認します。 php dockerファイルがないので、php7を含むphp:alpineを作成しています。

    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 
    

    次に、PHPコンテナにmysqliをインストールしました

    docker exec -it php ash
    

    以下のコマンドを実行します

    docker-php-ext-install mysqli;
    

    次に、test.php

    を作成します

    ここでのサーバー名はdb 。サーバー名は、php.ifにリンクしているdbコンテナ名になります。ping db phpコンテナでは、dbコンテナにpingを実行します。

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

    次に、このファイルをphpコンテナーで実行します。 PHPコードをマウントして実行できますが、これは私がテストのために行ったことです。そして、rootユーザーとして試しました。

    php -f test.php
    

    そして、これもdbとリンクしている管理者です



    1. 自己署名証明書を使用して、PostgreSQLSSL接続を錆びた状態で使用する

    2. MySQLでは、コミットするまで参照整合性チェックを延期できますか?

    3. データベースバックアップ-MariaDBMariabackupとPerconaXtrabackupの比較

    4. アプリがバックグラウンドまたはクローズ状態の場合、FirebaseメッセージサービスからSQLiteデータベースにレコードを挿入できません