LoginSignup
6
5

More than 5 years have passed since last update.

DockerでNginxからrailsの静的コンテンツを配信する

Posted at

DockerでNginx+Unicornのアプリケーションサーバ構成で動作させる際に、静的コンテンツはNginxで返したい時がある。

そういう場合、Unicornコンテナでは共有ボリューム指定、NginxコンテナではそのボリュームをマウントしNginxの設定ファイルでrootに指定するのが便利。

手順

まず、docker runコマンドの-vオプションでディレクトリを指定。/home/rails/Stargazer以下をrailsのworkディレクトリとし、コンテナはstargazer-unicornとする。

$ docker run -v /home/rails/Stargazer --name container-unicorn image-unicorn

次にNginxコンテナで--volumes-fromオプションを使いマウントするコンテナ名を指定する。

$ docker run --name container-nginx --link container-unicorn:unicorn -p 443:443 -p 80:80 --volumes-from container-unicorn image-nginx

最後に、Nginxの設定ファイルでrootを指定

http {
  server {
    root /home/rails/Stargazer;
    # 色々省略
  }
}

補足

-vでオプション指定する他に、Dockerfileでvolume指定してもいい

VOLUME /home/rails/Stargazer

どちらに記述しても良いと判断できるとき、自分はDockerファイルで出来ることはDockerファイルでやるようにしてる。

6
5
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
6
5