无法让我的php容器连接到mysql容器

时间:2016-10-01 13:42:51

标签: docker docker-compose

我对Docker来说是全新的,我试图用docker-compose创建一个LEMP堆栈。我的所有容器都在运行,但是我无法将我的php容器连接到我的mysql容器。我有一个看起来像这样的docker-compose.yml:

version: '2'

services:
nginx:
image: evild/alpine-nginx:1.9.15-openssl
container_name: lemp_nginx
restart: always
links:
  - php:php
volumes:
  - ./html:/var/www/html/:ro
  - ./nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf:ro
  - ./nginx/conf.d:/etc/nginx/conf.d:ro
ports:
  - 80:80
  - 443:443

php:
build:
  context: .
  dockerfile: Dockerfile.php-fpm
container_name: lemp_php
restart: always
volumes:
  - ./html:/var/www/html
depends_on:
  - db
links:
  - db:db

db:
image: mariadb:latest
container_name: lemp_mariadb
restart: always
volumes:
  - db-data:/var/lib/mysql
environment:
  MYSQL_ROOT_PASSWORD: wp
  MYSQL_DATABASE: wp
volumes:
db-data:
driver: local

然后在我的./html文件夹中,我创建了一个index.php文件,其中包含以下内容以测试数据库连接:

<?php

$dbuser = 'root';
$dbpass = 'wp';
$dbhost = 'db';

$connect = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Unable to      Connect to '$dbhost'");

echo "Connected to DB!";

结果如下: 警告:mysqli_connect():( HY000 / 1045):用户访问被拒绝&#39; root&#39; @&#39; 172.18.0.3&#39; (使用密码:YES)在第7行的/var/www/html/index.php中 无法连接到&#39; db&#39;

2 个答案:

答案 0 :(得分:0)

要获取任何容器的IP docker inspect <container_name> | grep IPAddress。使用IP,您将能够在其他容器中进行连接。

答案 1 :(得分:0)

发现问题。这是以下几行:

environment: - MYSQL_ROOT_PASSWORD=wp 

这不起作用,而是root密码是“password”。

所以当我连接到mysql容器并运行时:

mysql -h localhost -p -u root wp

使用密码“wp”不起作用,但密码“密码”有效。

所以,似乎env vars不适用于mariadb。它根本没有创建wp wordpress。