Symfony - 使用命令行时未知的MySQL服务器主机

时间:2016-11-11 14:37:04

标签: php symfony docker doctrine-orm

因此,出于某些原因,当我运行cache:clear时,我收到以下错误:

mysql error

但是当我通过浏览器查看应用程序时,似乎可以很好地连接到数据库,因为当我使用不正确的数据编辑parameters.yml时,它会在浏览器中输出错误,说它无法连接。

我正在使用docker,我有以下设置:

php:
  image: zimmobe/php:5.6-apache-oraclelinux
  volumes:
    - ./:/var/www/project/
  environment:
    - SYMFONY_ENV=dev
    - SYMFONY_DEBUG=1
    - BASE_DIR=/var/www/project
  links:
    - mysql
  ports:
    - 3005:80

mysql:
   image: mysql:5.6
   environment:
     MYSQL_ROOT_PASSWORD: root
     MYSQL_DATABASE: minecraftweb
   ports:
     - 3306:3306

和我的parameters.yml看起来像这样:

parameters:
    database_host: mysql
    database_port: 3306
    database_name: minecraftweb
    database_user: root
    database_password: root
    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: null
    mailer_password: null
    secret: ThisTokenIsNotSoSecretChangeIt

那么命令行抛出错误而不是浏览器中的应用程序的原因是什么?

1 个答案:

答案 0 :(得分:3)

您应该在容器内启动命令,一个示例(可能是脚本):

docker-compose \
    -f docker-compose.yml \
    run --rm --entrypoint bash php -c \
    "id -u dockeruser &> /dev/null || useradd -r -g users -u $USER_ID --base-dir /tmp dockeruser && su dockeruser -c 'bin/console cache:clear'"

希望这个帮助