Posted at

Vagrant + docker-symfony でホスト OS のブラウザからアプリケーションにアクセスする

More than 1 year has passed since last update.


背景


  • Symfony を Vagrant + Docker で動かしたいため、Docker イメージの docker-symfony を使った

  • コンテナの起動まではできたものの、動作確認のためにホスト OS から PHP アプリケーションへのアクセスができない


    • nginx の "404 Not Found" が出る




対処方法


1. Vagrantfile にポートフォワード設定をする


  • 基本的なところだが、改めて設定を確認する

  • 以下のような記述がされていれば OK (筆者は 8000 -> 8000 に設定している)


Vagrantfile

  config.vm.network "forwarded_port", guest: 8000, host: 8000



  • VM をすでに起動している場合は vagrant reload して反映させておく


備考


  • フォワード先のポートは docker-compose.ymlports と辻褄をあわせておくこと


docker-compose.yml

    nginx:

build: ./nginx
ports:
- "8000:80"
:


2. ホスト OS の hosts に symfony.localhost を追加する


  • 個人的にはここが盲点だった

  • docker-symfony を使う場合は hosts に symfony.localhost を追加する必要がある


    • …が、てっきり ゲスト OS の hosts だけに追加すればよいのだと勘違いしていた

    • 実際は ホスト OS (Windows なり Mac なり Linux なり) の hosts に追加が必要



  • Windows XP 以降であれば C:\Windows\System32\drivers\etc に hosts があるので以下を追加


hosts

127.0.0.1 symfony.localhost



3. ホスト OS のブラウザからアクセスする


  • URL は http://symfony.localhost:8000/


    • ポートは適宜変えること



  • Welcome!
    image.png