我正在尝试将phabricator作为docker图像启动。问题是当我访问phabricator / webroot时,phabricator返回Cannot Find MySQL!
页面。当我尝试指定mysql.host
,mysql.port
,mysql.user
和mysql.pass
参数时,它似乎仍然失败。
编辑:我在macOS" Sierra"用docker-machine。
我通过分离出三个组成部分来做到这一点:
nginx图像和php-fpm图像通过相同的卷共享数据。具体来说,我在data / dir中存储了必需的phabricator文件(phabricator,liphutil,arcanist)。我的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容器中。
搬运工-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")。所有主人和副本都完全无法访问。
数据/ phabricator / CONF /本地/ local.json
{
"mysql.port": "3306",
"mysql.pass": "12345",
"mysql.user": "phabricator",
"mysql.host": "mysql"
}
答案 0 :(得分:1)
尽管错误信息表明phabricator无法连接/查找MySQL,但事实证明授予phabricator
用户的权限限制太多。
解决方案:向phabricator用户授予全局权限。