Docker(Ubuntu 16.04)Apache / PHP7 / Mysql5_7 - 数据库:连接失败:连接被拒绝

时间:2017-10-11 11:59:21

标签: php database connection docker-compose

我试图在Ubuntu 16.04上通过docker-compose up设置docker-container:Apache / PHP7 / Mysql 5.7。

问题是我没有从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数据)

搬运工-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等 - 没有任何工作。

我可以使用以下命令通过终端手动登录mysql容器: docker exec -it bash, 并通过&#34; mysql -u root -p&#34;登录 - &GT;密码:测试。

1 个答案:

答案 0 :(得分:0)

它解决了。 首先,我通过

获取正在运行的mysql容器的名称/ ID
public void createArchive(ArrayList<String> worklogIssue) throws IOException {
    String id = null;
        int i = 0;

        JSONArray json = new JSONArray(worklogIssue);


        for (i = 0; i < worklogIssue.size(); i++){
            JSONObject json_obj = json.getJSONObject(i);
            id = json_obj.getString("id");
        }
    }

然后我从命令

获得了一个ip-address
docker ps

就像在这个截图中一样。

command from nigel

我还在docker-compose.yml中修改了这一行:

docker inspect <name of container> | grep IPAddress

感谢Nigel Ren,感谢jcorry的回答。现在一切正常。