首页 文章

phabricator在dockerized php容器中找不到dockerized mysql

提问于
浏览
3

我正在尝试将phabricator作为docker图像启动 . 问题是当我访问phabricator / webroot时,phabricator会返回 Cannot Find MySQL! 页面 . 当我尝试指定 mysql.hostmysql.portmysql.usermysql.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 回答

  • 1

    尽管错误消息说phabricator无法连接/查找MySQL,但事实证明授予 phabricator 用户的权限限制太多 .

    解决方案:向phabricator用户授予全局权限 .

相关问题