泊坞撰写LAMP数据库连接错误

问题描述:

所以运行docker-compose up后参观http://localhost:8000/泊坞撰写LAMP数据库连接错误

输出的docker ps -a,当我得到消息Error establishing a database connection?或者它应该只显示一个容器,因为wordpressdepends_ondb

所以我期待看到我的Wordpress网站localhost:8000
已导入数据库确保我sed将所有网址更改为指向http://localhost
已经安装了./html其中包含我的源文件到容器的/var/www/html

我错过了什么吗?

文件夹结构

Folder 
| 
|-db 
| |-Dockerfile 
| |-db.sql 
| 
|-html 
| |- (Wordpress files) 
| 
|-php 
| |-Dockerfile 
| 
|-docker-composer.yml 

泊坞窗,composer.yml

version: '3' 

services: 
    db: 
    build: 
     context: ./db 
     args: 
     MYSQL_DATABASE: coown 
     MYSQL_ROOT_PASSWORD: root 
    ports: 
     - "3306:3306" 
    environment: 
     MYSQL_DATABASE: coown 
     MYSQL_ROOT_PASSWORD: root 

    wordpress: 
    build: 
     context: ./php 
    depends_on: 
     - db 
    ports: 
     - "8000:80" 
    volumes: 
     - ./html:/var/www/html 

DB/Dockerfile

FROM mysql:5.7 
RUN chown -R mysql:root /var/lib/mysql/ 

ARG MYSQL_DATABASE 
ARG MYSQL_ROOT_PASSWORD 

ENV MYSQL_DATABASE=$MYSQL_DATABASE 
ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD 

ADD db.sql /etc/mysql/db.sql 
RUN cp /etc/mysql/db.sql /docker-entrypoint-initdb.d 

EXPOSE 3306 

PHP/Dockerfile

FROM php:7.0-apache 
RUN docker-php-ext-install mysqli 

docker-compose up一些输出:

db_1   | 2017-06-12T19:21:33.873957Z 0 [Warning] CA certificate ca.pem is self signed. 
db_1   | 2017-06-12T19:21:33.875841Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 
db_1   | 2017-06-12T19:21:33.876030Z 0 [Note] IPv6 is available. 
db_1   | 2017-06-12T19:21:33.876088Z 0 [Note] - '::' resolves to '::'; 
db_1   | 2017-06-12T19:21:33.876195Z 0 [Note] Server socket created on IP: '::'. 
db_1   | 2017-06-12T19:21:33.885002Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170612 19:21:33 
db_1   | 2017-06-12T19:21:33.902676Z 0 [Warning] 'user' entry '[email protected]' ignored in --skip-name-resolve mode. 
db_1   | 2017-06-12T19:21:33.902862Z 0 [Warning] 'user' entry '[email protected]' ignored in --skip-name-resolve mode. 
db_1   | 2017-06-12T19:21:33.902964Z 0 [Warning] 'db' entry 'sys [email protected]' ignored in --skip-name-resolve mode. 
db_1   | 2017-06-12T19:21:33.903006Z 0 [Warning] 'proxies_priv' entry '@ [email protected]' ignored in --skip-name-resolve mode. 
db_1   | 2017-06-12T19:21:33.905557Z 0 [Warning] 'tables_priv' entry 'sys_config [email protected]' ignored in --skip-name-resolve mode. 
db_1   | 2017-06-12T19:21:33.910940Z 0 [Note] Event Scheduler: Loaded 0 events 
db_1   | 2017-06-12T19:21:33.911310Z 0 [Note] mysqld: ready for connections. 
db_1   | Version: '5.7.18' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) 
db_1   | 2017-06-12T19:21:33.911365Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check. 
db_1   | 2017-06-12T19:21:33.911387Z 0 [Note] Beginning of list of non-natively partitioned tables 
db_1   | 2017-06-12T19:21:33.926384Z 0 [Note] End of list of non-natively partitioned tables 
wordpress_1 | 172.18.0.1 - - [12/Jun/2017:19:28:39 +0000] "GET/HTTP/1.1" 500 557 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" 

您使用 “DB” 主机连接PHP(WordPress的? wp-config.php?)到您的数据库,而不是通常的“本地主机”?。

+0

好问题。 DB主机被定义为'define('DB_HOST','localhost');'这是否正确?我不知道如何找到'docker'创建的'link'。 – resting

+0

对,把它改成'define('DB_HOST','db');'工作:) – resting

+0

你为我节省了很多痛苦!太糟糕了,我只能赞扬你一次^^ – Moebius