【发布时间】:2017-08-17 20:35:06
【问题描述】:
我正在尝试将 phabricator 作为 docker 映像启动。问题是当我访问 phabricator/webroot 时,phabricator 返回一个Cannot Find MySQL! 页面。当我尝试指定 mysql.host、mysql.port、mysql.user 和 mysql.pass 参数时,它似乎仍然失败。
编辑:我正在使用 docker-machine 在 macOS "Sierra" 上尝试这个。
我通过分离出三个组件来做到这一点:
- nginx 镜像
- php-fpm 图片
- mysql 镜像
nginx 镜像和 php-fpm 镜像通过同一个卷共享数据。具体来说,我将必要的 phabricator 文件(phabricator、liphutil、arcanist)存储在 data/ 目录中。我的 docker 项目的结构是这样的:
docker-project/
- docker-compose.yml
- php_setup.conf
+ data/
+ phabricator/
+ arcanist/
+ liphutil/
+ nginx/
- Dockerfile
+ php-fpm/
- Dockerfile
php_setup.conf只是phabricator php项目的必要nginx配置,复制到nginx容器中。
docker-compose.yml
version: "2"
services:
web:
build:
context: .
dockerfile: nginx/Dockerfile
ports:
- "80:80"
volumes:
- ./data:/srv
php:
build:
context: .
dockerfile: php-fpm/Dockerfile
volumes:
- ./data:/srv
mysql:
image: mysql
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_USER=phabricator
- MYSQL_PASSWORD=12345
我可以从 php-fpm 图像telnet mysql 3306 主机,所以它显然是可用的。但是,我不确定是否会出现此问题,因为我将 phabricator 项目放在主机卷上,而不是在容器本身中。
我希望有人能指出我正确的方向。
phabricator 应要求提供的日志错误:
无法建立与任何数据库主机的连接(尝试“phabricator_config”时)。所有的 master 和 replica 都完全无法访问。
data/phabricator/conf/local/local.json
{
"mysql.port": "3306",
"mysql.pass": "12345",
"mysql.user": "phabricator",
"mysql.host": "mysql"
}
【问题讨论】:
-
这些容器的启动顺序是什么?您可以尝试
depends_on: mysql为您的 php 服务吗? -
粘贴您的 phabricator_config
-
@TarunLalwani 我假设您指的是为配置提供的
local.json文件(我在上面添加了它)。 “phabricator_config”是传递给 phabricator 代码中addPhabricatorConfig(...)的变量。它导致对mysql.host等的引用...... -
@Metaphox 我忘了提到我已经尝试过明确启动顺序。不幸的是,depends_on 似乎不起作用。 :(
-
可能是配置根本没有加载?还尝试使用您提供的凭据使用 mysql 客户端 cli 进行连接,以确保数据库连接正常
标签: mysql docker docker-compose phabricator