PHP
Symfony
vagrant
docker

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

背景

  • 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