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

时间:2017-08-17 20:35:07

标签: mysql docker docker-compose phabricator

我正在尝试将phabricator作为docker图像启动。问题是当我访问phabricator / webroot时,phabricator返回Cannot Find MySQL!页面。当我尝试指定mysql.hostmysql.portmysql.usermysql.pass参数时,它似乎仍然失败。

  编辑:我在macOS" Sierra"用docker-machine。

我通过分离出三个组成部分来做到这一点:

  1. nginx image
  2. php-fpm image
  3. mysql image
  4. 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"
    }
    

1 个答案:

答案 0 :(得分:1)

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

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