簡體   English   中英

Docker(Ubuntu 16.04)Apache / PHP7 / Mysql5_7-數據庫:連接失敗:連接被拒絕

[英]Docker (Ubuntu 16.04) Apache/PHP7/Mysql5_7 - Database: Connection failed: Connection refused

我正在嘗試通過docker設置docker-container:Apache / PHP7 / Mysql 5.7,在Ubuntu 16.04上編寫。

問題是我沒有從index.php(localhost:8080)獲得數據庫連接。 如果我嘗試連接,它說:“連接失敗:連接被拒絕”。

apache-php7 dockerfile: https : //github.com/nimmis/docker-apache-php7/blob/master/Dockerfile

文件夾是:

apache-php7(包括Dockerfile)

html(包括index.php)

mysql(mysql數據)

docker-compose.yml:

version: '2'

services:
  php:
    build: apache_php7
    container_name: apache_php7
    ports:
      - "8080:80"
      - "443:443"
    volumes:
      - ./html:/var/www/html
    links:
      - db
  db:
    image: mysql:5.7
    container_name: mysql_5_7
    volumes:
     - ./mysql:/var/lib/mysql
    ports:
     - "127.0.0.1:3306:3306"
    environment:
     - MYSQL_ROOT_PASSWORD=test
     - MYSQL_USER=admin
     - MYSQL_PASSWORD=test     
     - MYSQL_DATABASE=database

index.php(php-snippet)

<?php
$servername = "127.0.0.1";
$username = "admin";
$password = "test";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?> 

我搜索了類似的線程,並使用PHP-PDO等進行了嘗試-沒有任何效果。

我可以通過Terminal通過以下命令手動登錄mysql-container:docker exec -it bash,然后通過“ mysql -u root -p”-> passwort:test登錄。

解決了。 首先,我通過獲取運行MySQL容器的名稱/ ID

docker ps

然后我從命令中獲得了一個IP地址

docker inspect <name of container> | grep IPAddress

就像此屏幕截圖一樣。

奈傑爾的命令

我也在docker-compose.yml中修改了這一行:

    volumes:
    - /var/lib/mysql:/var/lib/mysql

感謝Nigel Ren和jcorry的回答。 現在一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM