चूंकि आप लिंकिंग missing खो रहे हैं आप PHP के साथ डीबी कंटेनर। जब आप db को PHP से लिंक करते हैं तो यह PHP के लोकलहोस्ट से एक्सेस किया जा सकता है।
यहां मैंने आपकी डॉकर-कंपोज़ फ़ाइल को संशोधित किया है क्योंकि मुझे हर जगह अल्पाइन पसंद है;)। और मैं कोड स्तर की जाँच के बजाय adminer और db से verfiy कनेक्शन के लिंक का उपयोग करता हूं। जैसा कि मेरे पास आपके पास php docker फ़ाइल नहीं है, इसलिए मैं php:alpine बना रहा हूँ जिसमें 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
फिर मैंने php कंटेनर में mysqli स्थापित किया
docker exec -it php ash
और कमांड के नीचे चलाएँ
docker-php-ext-install mysqli;
फिर test.php बनाएं
यहाँ सर्वर का नाम db है . ध्यान दें कि आपका सर्वर नाम वही होगा जो डीबी कंटेनर नाम है जो php.if से लिंक है। यदि आप ping db
php कंटेनर में यह db कंटेनर को पिंग करेगा।
<?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 कोड माउंट और चला सकते हैं लेकिन मैंने परीक्षण के लिए यही किया है। और मैंने रूट उपयोगकर्ता के रूप में कोशिश की।
php -f test.php
और यहाँ है adminer जो db से भी लिंक करता है