Symfony 3在Docker中 - 怪异连接拒绝错误



在Symfony 3项目上工作。

我所有有关数据库工作的CLI学说突击队,例如:

doctrine:database:createdoctrine:schema:update --force

很奇怪,我正在尝试通过控制器方法从存储库中获取一些数据,但是当我尝试在浏览器中导航到有关页面时,我似乎会在连接拒绝的错误上反弹。

以下一些配置:

config.yml part

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  utf8mb4
        default_table_options:
          charset: utf8mb4
          collate: utf8mb4_unicode_ci
    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

parameters.yml

parameters:
    database_host: 127.0.0.1
    database_port: 3306
    database_name: db_name
    database_user: db_user
    database_password: db_pw

**控制器**

<?php
namespace AppBundleController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
class DefaultController extends Controller
{
/**
 * @Route("/", name="homepage")
 */
public function indexAction()
{
    return $this->render('default/index.html.twig');
}
/**
 * @Route("/roedel", name="roedel")
 */
public function roedelAction()
{
    return $this->render('default/roedel.html.twig');
}
/**
 * @Route("/territorium", name="territorium")
 */
public function territoriumAction()
{
    return $this->render('default/territorium.html.twig');
}
/**
 * @Route("/dejacht", name="jacht")
 */
public function jachtAction()
{
    $artists = $this->getDoctrine()
        ->getRepository('AppBundle:Artist')
        ->findAll();
    return $this->render('default/jacht.html.twig', [
        'artists' => $artists
    ]);
}
}

额外信息:

  • 使用Docker是一个测试柜,尽管我不确定这是否重要,因为Cli突击队的学说确实有效。

当您试图在Docker容器中运行Symfony的Console命令时,有两种可能的方案。

您从本地计算机来运行Symfony命令,例如。Mac,Windows等 - 然后,DB主机必须是您的Docker Machine IP(通常是192.168.99.100,但取决于您的配置),并且您必须为MySQL容器正确映射3306端口3306-更多有关端口映射https://docs的更多信息.docker.com/compose/compose-file/#/ports。

您从" Web App"容器 - 然后将DB主机设置为mysql,您必须在" Web App"和MySQL容器之间正确配置网络 - 有关网络的更多信息https://docs.docker.com/compose/compose-file/#/networks

对我而言,更方便将是第二种方法,因为您不必更改DB参数...

您只需要在config.yml

中添加mysql Server
doctrine:
dbal:
    driver:   pdo_mysql
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
    server_version: 5.7.42

并手动删除缓存存储库/dev

相关内容

  • 没有找到相关文章

最新更新