5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laradockでローカルサーバを立ち上げてブラウザ表示する方法

Posted at

MacやWindowsのローカル環境で、LaravelやRubyonRailsを使う場合、php artisan serverails sを起動すればすぐにブラウザで表示できるのですが、docker環境にプロジェクトを作成した場合、コマンドだけではブラウザに表示されません。

dockerで立ち上げたローカルサーバがどのような仕組みでブラウザ表示されるのかをまとめていきたいと思います。

localhostで立ち上げたら基本的にうまくいかない

docker環境でrails sをすると、http://localhost:3000の表示が出るかと思います。

(Laravelならhttp://localhost:8000だったかな)

そのままlocalhostをブラウザに入力しても表示はされません。

なぜなら、localhostは127.0.0.1だと判断されるからです。

dockerコンテナにはIPが設定されていて、172.22.0.xのようなIPが確か動的に設定されます。

これらを指定しなければなりません。

各フレームワークごとに設定の仕方は異なるのですが、Railsなら、rails s -B 0.0.0.0でdocker環境のIPで立ち上げることができると思います。

コンテナを再起動しないのであれば、172.22.0.xを指定しても良いのですが、起動するたびに動的にIPが割り振られるので、0.0.0.0を指定することで、その時のdockerコンテナのIPを指定すると良いです。

ポート接続

laradockの場合、workspaceというコンテナでプロジェクトを作成するのですが、(通常のdockerだとwebコンテナでしょうか。)22ポート→22ポートへの接続しかされていません。

なので、0.0.0.0:22で立ち上げたサーバをlocalhost:22で表示することができる状態です。

railsは3000、laravelは8000で立ち上げるので、ポート接続の設定もしないといけません。

laradockのdocker-compose.ymlファイルの以下のように設定します。

### Workspace Utilities ##################################
    workspace:
      ports:
        - "${WORKSPACE_SSH_PORT}:22"
        - "3000:3000"
        - "8000:8000"

これで、3000ポートと8000ポートも接続することができます。

この状態でrails s -B 0.0.0.0でサーバを立ち上げれば、localhost:3000でRailsの画面を表示することができます。

NginxかApacheを使うのがおすすめです

毎回rails s -B 0.0.0.0を打つのも大変ですし、プロジェクトが増えてくると同時に立ち上げることができなくなってきてしまいますので、nginxやapacheを使うのがおすすめです。

こちらの設定方法は今回は割愛しますが、IPとポートの考え方は基本的には同じです。

nginxやapacheを使えば、Railsなら3000ポートと決まっているわけではなく、このディレクトリに接続した時は8001番ポートで接続する、というようにポートの振り分けを柔軟に行うことができます。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?