Nginx를 프록시 서버(Ubuntu)로 사용하여 Docker로 NodeJS Restful 애플리케이션 배포

2573 단어 nginxdockerubuntunode
최근에는 효율적인 지속적 통합 및 지속적 개발(CI/CD)을 향한 움직임으로 모든 애플리케이션을 도커화하고 Docker를 사용하여 컨테이너 내에서 이러한 애플리케이션을 실행하고 있습니다. NodeJS는 크랙하기 어려운 것으로 판명되었습니다...하지만 아쉽게도 마침내 크랙되었습니다. 이것이 내가 마침내 NodeJS RESTFUL 앱을 도킹하고 실행하는 방법입니다.
  • 원하는 파일 시스템으로 이동하여 디렉토리를 생성한 다음 생성된 디렉토리로 변경합니다.$ mkdir <foldername> && cd <foldername>
  • 다음을 실행하여 npm 또는 yarn를 사용하여 새 nodejs 앱을 만듭니다.$ npm init <application name>
  • Express와 같은 앱 종속성을 추가합니다.$ npm install express --save
  • 이제 package.json 파일, node_modules 폴더 및 일부 잠금 파일이 있어야 합니다. 다음을 실행하여 앱 디렉토리 터미널 창/셸 아래에 이 명령의 기본 파일을 만듭니다. $ touch <filename>.js5.package.json 파일을 편집합니다. 스크립트 정의 아래에 존재하지 않는 경우 이것을 추가하고 파일을 저장하십시오.

  • "scripts": {
    "start": "node <mainfile>"
    }
    


  • 앱을 도커화합니다. 앱 디렉토리 파일 시스템 아래의 터미널에서 다음 파일을 추가하십시오.$ touch Dockerfile$ touch docker-compose.yml
  • 다음 내용이 포함된 Dockerfile을 열고 편집합니다.

  • # obtain the node image
    FROM node
    # change to the working directory
    WORKDIR <directory_name>
    #move the package file to the current working directory
    COPY package*.json ./
    # install the depedencies
    RUN npm install
    COPY . .
    # run the app
    CMD [ "node", <mainfile> ]
    


  • nginx 구성을 처리할 앱 폴더 내에 새 디렉토리를 만들고 폴더로 cd하여 새 nginx conf 파일을 만듭니다.mkdir nginx && cd nginx && touch default.conf
  • 다음 내용으로 기본 conf 파일을 편집합니다. environment nameportdocker-compose.yml 파일에서 가져와서 정의해야 합니다.

  • http {
     upstream backend {
       server <environment_name: port>
     }
     server {
      location / {
        proxy_pass http://backend;
      } 
     }
    }
    


  • 이 내용으로 docker-compose.yml를 편집하십시오.

  • versions: '3',
    services:
      nginx_server:
        image: nginx #image of the nginx
        volumes: 
         - './nginx/default.conf:/etc/nginx/nginx.conf'
        ports:
         - '8000:80'
      #define the node app container
      app:
       container_name: <container name>
       build:
        context: .
        dockerfile: Dockerfile #name of the dockerfile we created
      ports:
       - '3000:80' #docker container port = 3000, host port= 80
      environment:
       - APPID=3000
    

    좋은 웹페이지 즐겨찾기