<!-- TITLE: Dockerfile For Node.js Frontend --> <!-- SUBTITLE: A quick summary of Dockerfile For Node.js Frontend --> # Dockerfile For Node.js Frontend This is the base Dockerfile can be used to serve Node.js application. Based on Alpine Linux. Average size is 500MB. It includes nginx for serving static content. ## Dockerfile ```dockerfile FROM node:12.9.0-alpine RUN apk update && apk add nginx RUN mkdir -p /run/nginx COPY ./frontend_nginx.conf /etc/nginx/conf.d/default.conf WORKDIR /app ADD package*.json yarn.lock /app/ RUN yarn install COPY . /app RUN yarn build RUN ln -s /app/.next/ /app/_next EXPOSE 80 CMD ["sh", "-c", "nginx; yarn start"] ``` ## Nginx config file ```nginx upstream nodejs { server 127.0.0.1:3001; } server { listen 80 default_server; listen [::]:80 default_server; root /app; location / { proxy_max_temp_file_size 0; proxy_buffering off; try_files $uri @nodejs; } location /_next/static { root /app; add_header Cache-Control "public, max-age=31536000, immutable"; gzip_static on; } location @nodejs { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Protocol $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://nodejs; proxy_redirect off; proxy_read_timeout 240s; } } ```