リンクがないため 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とリンクしている管理者です