isi Dockerfile:
FROM node:12.18.4-alpine3.11
WORKDIR /usr/app
COPY package.json ./
RUN npm install
COPY ./ ./
RUN apk add --no-cache bash
EXPOSE 3000
CMD ["node", "server.js"]
selanjutnya proses build image dan membuat container
build image dari Dockerfile dengan nama image my-nodejs:1
docker build . -t my-nodejs:1
membuat docker container
docker create --name simple-node -p 3000:3000 my-nodejs:1
menjalankan docker container
docker start simple-node
jika menggunakan docker-compose
# menjalankan docker-compose
docker-compose up -d
# jika file tidak bernama docker-compose.yml maka bisa menggunakan perintah -f
docker-compose -f nama-docker-compose.yml up -d
# untuk menghapus container
docker-compose down
scale aplikasi dapat dilakukan di docker-compose
docker-compose sclae nama-cotainers=2
default.conf nginx untuk reverse proxy ke aplikasi node.js
server{
listen 80 default_server;
location / {
proxy_pass http://web_app:3000; #pass to web_app:3000
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
docker-compose.yml
version: "3.7"
services:
web_app:
image: my-nodejs:3
restart: unless-stopped
nginx:
image: nginx:1.19.2-alpine
restart: unless-stopped
container_name: nginx
depends_on:
- web_app
ports:
- 9000:80
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf