はじめに
本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
【Docker】Rails + Puma + Nginx + MySQL + React(2)
Nginx
Dockerfile
FROM nginx:1.21.6
RUN rm -f /etc/nginx/conf.d/*
COPY nginx.conf /etc/nginx/conf.d/myapp.conf
ENV USER_NAME=myuser
RUN adduser ${USER_NAME} && \
chown -R ${USER_NAME} /var/cache/nginx/ && \
chown -R ${USER_NAME} /var/run/
USER ${USER_NAME}
CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
nginx.conf
upstream myapp {
server unix:///myapp/tmp/sockets/puma.sock;
}
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /myapp/public;
client_max_body_size 100m;
error_page 404 /404.html;
error_page 505 502 503 504 /500.html;
try_files $uri/index.html $uri @myapp;
keepalive_timeout 5;
location @myapp {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://myapp;
}
}
puma.rb
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count
environment ENV.fetch("RAILS_ENV") { "development" }
plugin :tmp_restart
app_root = File.expand_path("../..", __FILE__)
bind "unix://#{app_root}/tmp/sockets/puma.sock"
stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true
React
docker-compose.yml
version: '3.9'
services:
front:
build: .
volumes:
- .:/myapp/front
environment:
NODE_ENV: development
command: sh -c "npm start"
ports:
- 3000:3000
networks:
- nginxrailspumamysql_default
networks:
nginxrailspumamysql_default:
external: true
Dockerfile
FROM node:16.14.2
ENV APP_NAME=myapp
ENV USER_NAME=myuser
ENV TZ=Asia/Tokyo
WORKDIR /${APP_NAME}/front
RUN adduser ${USER_NAME} && \
chown -R ${USER_NAME} /${APP_NAME}
USER ${USER_NAME}
EXPOSE 3000
CMD ["npm", "start"]