railsのアプリケーションサーバpumaではなく、nginxをウエブサーバーとして、導入してみましたので、メモとして、導入手順をここに残しておきました。
#nginx ウェブサーバーの導入手順
##railsのDockerfileを修正
※puma.sockを配置するディレクトリを作成(socketsとはnginxとの通信用)
RUN mkdir -p tmp/sockets
##nginx用のフォルダを新規作成
./containers/nginx/
##nginx用のDockerfileと設定ファイルを格納
./containers/nginx/Dockerfile
./containers/nginx/nginx.conf
##docker-compose.ymlファイルを修正
railsとnginx通信用のフォルダをマウント
nginx起動用のサービスを追加
app
build: .
volumes:
- .:/webapp
#nginxとpuma間の通信では、ボリュームズのマウントが必要
- tmp-data:/webapp/tmp
command: rails s
depends_on:
- db
web:
build:
context: containers/nginx
volumes:
#nginxとpuma間の通信では、ボリュームズのマウントが必要
- tmp-data:/webapp/tmp
- ./containers/nginx/log:/var/log/nginx/
ports:
- 80:80
depends_on:
- app
##puma.rbを修正
###pumaのhttp機能ではなく、nginxを使用する理由
puma+railsのみで稼働する場合、大量なアクセスが来る場合、システム全体のパフォマンスが大幅に落ちる可能性があるその代わりに、nginxはCで作成されたため、処理性能が高く、使用メモリが少ない特徴で、
・ビジネスロジックなどの動的処理が必要ない静的処理をnginxで対応、
・ビジネスロジックが必要な動的処理をpuma+railsでrailsで対応
という組み合わせで、システム全体のパフォマンスを高めることが可能