【发布时间】:2016-03-08 05:23:50
【问题描述】:
我创建了一个小型的docker-compose.yml,它在部署小型 WordPress 实例时非常有用。它看起来像这样:
wordpress:
image: wordpress:latest
links:
- mysql
ports:
- "1234:80"
environment:
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: "password"
WORDPRESS_DB_HOST: mariadb
MYSQL_PORT_3306_TCP: 3306
volumes:
- /srv/wordpress/:/var/www/html/
mysql:
image: mariadb:latest
mem_limit: 256m
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: "password"
volumes:
- /srv/mariadb:/var/lib/mysql
但是当我现在启动它时(可能是因为 docker 更新到 Docker 版本 1.9.1,构建 a34a1d5),它失败了
wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
wordpress_1 |
wordpress_1 | MySQL Connection Error: (2002) Connection refused
当我 cat /etc/hosts 中的 wordpress_1 时,有 MySQL 条目:
172.17.0.10 mysql 12a564fdbc56 mariadb
我可以 ping MariaDB 服务器。
当我docker-compose up 时,WordPress 被安装,并在多次重启后 MariaDB 容器打印:
Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
哪个应该表明它正在运行,不是吗?
如何让 WordPress 能够连接到 MariaDB 容器?
【问题讨论】:
-
你的 mysql 容器暴露 3306 的端口是什么?你有环境变量:MYSQL_PORT_3306_TCP_PORT?
-
感谢您的回答。它在 3306 上运行,正如您在启动的 mariadb docker 消息(向右滚动)中看到的那样......仍然不知道,为什么这个设置不再工作了
-
就是在容器里面,请问docker容器上暴露的端口是什么:docker port
-
感谢@Michael 愿意提供帮助。服务器更新后完全重启解决了任何奇怪的行为,并且设置再次开始工作。
-
由于这个主题最近很活跃,我会注意 WORDPRESS_DB_HOST 应该指向 docker-compose 文件中列出的数据库服务名称,在上面的例子中是“mysql”而不是“mariadb” "。
标签: wordpress docker mariadb docker-compose