2017-10-30 11 views
0

symfonyでのURL生成に関する問題。 docker-composeを使ってphp、nginx、postgreSQLを実行します。 OKSymfony:Dockerを使ってポートとスキームを指定する方法は?

問題はsymfonyのと小枝が正しくこのURLを使用していないこと、であるHTTP 200 - 正しく私はlocalhost:8080でそれにアクセスできるように、nginxのを設定します

docker-compose.dev.yml

services: 
    php: 
     volumes: 
      - '.:/srv' 
     environment: 
      - SYMFONY_ENV=dev 

    front: 
     environment: 
      - VIRTUAL_HOST=localhost 
      - VIRTUAL_PORT=8080 
     ports: 
      - 0.0.0.0:8080:80 
     volumes: 
      - ./web:/srv 
      - /keys/reports.crt:/certs/domain.crt:ro 
      - /keys/reports.key:/certs/domain.key:ro 

。例えば

<link rel="stylesheet" type="text/css" href="{{ url }}{{ asset('email/web/styles/main.css') }}?v=1"> 

出力、間違ったスキームと8080ポートが含まれていませんindex.html.twig

https://localhost/email/web/styles/main.css?v=1

1つの提案、しかし、これは効果がなかった.envファイル

SERVER_HOST=localhost 
SERVER_SCHEME=http 
SERVER_PORT=8080 

にこれらの変数を追加しました。

symfony config_dev.ymlには、httpsまたは別のポートを指定するものはありません。基本設定も同様です。

どのようにこの作業をするには、Symfonyはnginxからスキームを取得できませんか?

のIntelliJ Xdebugを、でこれを示して$ _SERVER

[SYMFONY__SERVER__HOST] => localhostの

おかげ

答えて

1

nginxのは、コンテナ内のポート80でリッスンしているので、これはおそらくですアクセスポートがポート80であるかのようにsymfonyがURLを生成します。

あなたが試すことができることの1つは、framework.assets.base_urlsを​​に設定することです。これにより、すべてのアセットURLに使用するベースURLを定義できます。また、資産関数がこれを追加するので、twigファイルの{{ url }}部分を削除する必要があります。詳細については

framework: 
    assets: 
     base_urls: 
      - 'http://localhost:8080/' 

https://symfony.com/doc/current/reference/configuration/framework.html#base-urls

0

あなたnginx configが適切server_name

server { 
    server_name _; 
    server_alias myapp.dev; 
} 
を持っている必要があります
関連する問題