我正在尝试将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图像通过相同的卷共享数据 . 具体来说,我在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容器中 .
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根据要求提供的日志错误:
无法与任何数据库主机 Build 连接(尝试“phabricator_config”时) . 所有主人和副本都完全无法访问 .
data/phabricator/conf/local/local.json
{
"mysql.port": "3306",
"mysql.pass": "12345",
"mysql.user": "phabricator",
"mysql.host": "mysql"
}
1 回答
尽管错误消息说phabricator无法连接/查找MySQL,但事实证明授予
phabricator
用户的权限限制太多 .解决方案:向phabricator用户授予全局权限 .