Docker + Node.js(Express) + Mysql 컨테이너 환경 구성

최대 1 분 소요



수정됨_server_archi



컨테이너 환경구성


docker

(1) docker-compose.yml

version: '3'
services:
  proxy:
    image: nginx:latest   # 최신 버전의 Nginx 사용
    container_name: proxy # container 이름은 proxy
    ports: 
     - "80:80"           # 80 포트를 host와 container 맵핑
     - "443:443"           # 443 포트를 host와 container 맵핑
    volumes:
     - ./proxy/nginx.conf:/etc/nginx/nginx.conf # nginx 설정 파일 volume 맵핑
     - /etc/nginx/ssl:/etc/nginx/ssl
    restart: "unless-stopped" # 내부에서 에러로 인해 container가 죽을 경우 restart
  express1:
    build:
      context: ./server  # 빌드할 Dockerfile이 위치한 경로
    container_name: express
    expose:
      - "3000"           # 다른 컨테이너에게 3000 포트 open
    volumes:
      - ./source:/source # host <-> container의 source 디렉토리를 공유
      - /source/node_modules 
    restart: "unless-stopped"

(2) Dockerfile

FROM node:12

WORKDIR /source
COPY . .

RUN npm install
#RUN npm install express mysql
RUN npm install -g nodemon
#RUN npm install aws-sdk
CMD [ "nodemon", "-L", "app.js"]

(3) package.json

{
  "name": "node-exam",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mysql": "^2.17.1",
    "aws-sdk": ">= 2.0.9",
    "jsonwebtoken": "^7.1.9",
    "winston": "^3.3.3",
    "winston-daily-rotate-file": "^4.5.0",
    "url": "^0.11.0",
    "google-auth-library": "^6.1.3",
    "pug": "^3.0.0",
    "mybatis-mapper": "^0.6.5",
    "moment" : "^2.29.1"
  }
}

카테고리:

업데이트:

댓글남기기