Symfony 3プロジェクトで作業しています。DockerのSymfony 3 - 奇妙な接続が拒否されたエラー
データベース作業に関わるすべての私のCLIの教義の部隊、のように:変なふうに十分
doctrine:database:create
またはdoctrine:schema:update --force
、私は私のコントローラメソッドで私のリポジトリからいくつかのデータを取得しようとしているが、私はそこに見えます私のブラウザで問題のページに移動しようとするとConnectionが拒否したエラーでバウンスする。いくつかのconfigs以下
:
config.yml一部
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 AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
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
]);
}
}
追加情報:
- 教義のためのCLIの部隊は、作業を行うので、これは重要でなければならない場合、私はわからないけれども、これは、テストケースであるとして、ドッキングウィンドウを使用しました。
...、第二のアプローチになりますが、CLIは、ドッキングウィンドウのコマンドライン(例えばSSH)からのコマンド教義を実行する、またはされていますあなたのオペレーティングシステムのコマンドライン(例えば、powershell)内で?後でドッカーが仮想マシンであるため、ドッカー内でアプリケーションを実行すると、ホスティングオペレーティングシステムではなく '127.0.0.1'(別名localhost)のドッカー設定からmysqlサーバにアクセスしようとします。簡略化する:mysqlがインストールされている/設定されている場所を詳細に記述してください。 – fyrye
@fyryeどこに行くのか分かります。私は私のOSのコマンドラインからdoctrine CLIコマンドを実行しています。 MySQLコンテナは実際には別のコンテナ(ポート3306)で動作しています。これはおそらく私が資格情報を変更する必要があることを意味します – wesvb
dockerにmysqlサーバをインストール/設定し、コマンドラインコマンドを実行するにはSSHまたはドッカーコンテナ経由でOS内のリモートにインストールする必要があります。ドッカーをアプリケーションホストに変える。これにより、ホスティングOSのクラッシュ/フォーマットが必要な場合にドッカーを導入したり、別の開発者と共有したりすることができます。それ以外の場合は、ドッカーがホストOSのmysql設定と通信する手段を設定する必要があります。以下を参照してください:https://hub.docker.com/r/mysql/mysql-server/ dockerでmysqlを設定すると、外部サーバにあなたのアプリケーションをどのように展開するのかが分かります。 – fyrye