Heroku의 Docker 컨테이너에서 노드 응용 프로그램을 호스팅하는 방법

소개


Docker meets NodeJS 시리즈의 세 번째 섹션입니다.
우리는 몬고 데이터베이스를 서비스로 추가해야 합니다. 아마도 몇 개의 단점을 추가해서 테스트할 수 있을 것입니다. 그러나 전체 응용 프로그램은 로컬에서 실행되고 있습니다. 전 세계가 당신의 노드 응용 프로그램을 테스트할 수 있는 기회를 주고 싶을 것입니다. 걱정하지 마십시오. Werick가 여기 있습니다.
이 부분에서, 우리는 Heroku에서 우리의 응용 프로그램을 위탁 관리할 것이다.

Note: Since we are introducing a new database service, by doing so this also makes our Node app also a service

Note: Ensure you go through the and the .

Note: Remember to clone the docker_nodejs_app repo here


왜 히로쿠야?


왜 Digital Ocean, Linode, GCP 또는 AWS가 아닌 Heroku를 선택했는지 스스로에게 물어볼 수도 있다...🤔Heroku는 인프라 시설의 하부 운행 상황을 걱정할 필요 없이 빠른 시작과 운행을 허용하고 코드를 배치할 수 있기 때문이다.
다른 플랫폼에 대해 CPU를 할당받을 것입니다. 소프트웨어, 라이브러리, SSH를 사용하여 서버를 보호하는 등 모든 것을 설정할 것입니다. 이것은 대부분의 시간을 차지할 것입니다. 단순express 서버만 관리하고 싶습니다.

입문


좋아, 우리 행사를 좀 진행하자.우선, Heroku에 계정을 만들어야 합니다.

Heroku에 계정을 생성한 후 CLI를 설치해야 합니다.Heroku CLI는 터미널에서 Heroku 애플리케이션을 직접 생성하고 관리할 수 있습니다.이것은 Heroku를 사용하는 데 필요한 부분이다.

비옷


CLI를 Mac에 설치하려면 다음 두 가지 방법으로 수행할 수 있습니다.
  • Download Installer
  • 사용homebrew:
    *bash $ brew tap heroku/brew && brew install heroku
  • 창문.


    Windows에 설치하려면 컴퓨터에 적합한 유형 32-bit 또는 64-bit

    Ubuntu


    Ubuntu의 경우 설치해야 함snap:
    $ sudo snap install --classic heroku
    

    배포 시작


    전 세계적으로 성공적으로 설치되었는지 확인하려면 터미널에 이 항목을 입력하십시오.
    $ heroku --version
    
    터미널cd에 노드 응용 프로그램이 있는 디렉터리를 입력하십시오.이제 CLI를 통해 Heroku에 로그인합니다.
    $ heroku login
    
    아무 키나 눌러 로그인하면 기본 브라우저가 시작되고 로그인하여 터미널로 돌아갑니다.
    용기 등록표에 로그인해야 합니다. 기본적으로, 이것은 Heroku가 제공하는 서비스로, 우리의docker 용기를 위탁 관리하는 데 사용됩니다.
    $ heroku container:login
    
    Heroku 프로그램을 만들어서 코드를 저장하고 구축해야 합니다.
    $ heroku create docker-nodejs-app
    
    너는 너의 단말기에서 유사한 것을 보아야 한다

    응용 프로그램을 구축하고 배치하기 전에 Express 서버가 실행하는 포트를 변경해야 합니다.기본 포트는 3000 이지만, Heroku에서 프로그램을 구축하고 배치할 때, 이미 사용한 PORT 에 대한 오류가 발생할 수 있습니다. 따라서 Heroku가 우리에게 포트를 주지 않으면 기본 3000을 사용하도록 조건을 만들어야 합니다.
    포트 기본값을 설정한 행을 다음과 같이 변경합니다.
    app.set("port", process.env.PORT || 3000);
    
    파일은 다음과 같습니다.
    "use strict"; // Ensures our code is compiled in strict mode
    
    // Lets import our web framework
    var express = require("express");
    var mongoose = require("mongoose");
    
    // Initialise our app
    const app = express();
    
    // Lets set our port
    /**
     * The default port number is `3000` if Heroku does not provide us a port
     * Take note on that as we will come to that.
     */
    app.set("port", process.env.PORT || 3000);
    
    
    // Connect to database
    mongoose.connect("mongodb://mongo:27017/docker_nodejs_app", {
      useNewUrlParser: true,
      useCreateIndex: true
    });
    
    mongoose.connection.on("open", err => {
      if (err) console.log("Error connecting to our mongo database");
      console.log("Connected to mongo database successfully");
    });
    
    /**
     * To ensure works as it should we will create a
     * simple endpoint to return a json response
     */
    
    // Define our json response
    const data = {
      blog_name: "docker_nodejs_app",
      blog_author: "wachira (tesh254)",
      blog_author_twitter: "@wachira_dev"
    };
    
    // Define out GET request endpoint
    app.get("/", (req, res) => {
      res.status(200).json(data);
    });
    
    // Initialize our server
    app.listen(app.get("port"), () => {
      console.log(`Server listening on port ${app.get("port")}`);
    });
    
    
    다음으로, 우리는 app.js 우리의 buildimage 에서 push 까지
    $ heroku container:push web
    
    너는 너의 단말기에서 유사한 것을 보아야 한다

    배경에 무슨 일이 일어났습니까?
  • 우선, 우리의 전체 응용 프로그램은 Container RegistryDockerfile 설정에 따라 구축되었다.
  • Heroku CLI 는 docker-compose.yml 를 통해 우리의 built image 를 생성된 app 으로 전송합니다.
  • 다음은 전 세계가 접근할 수 있도록 응용 프로그램을 발표해야 한다.
    $ heroku container:push web
    
    이것은 터미널에 나타날 것입니다

    Heroku에 어플리케이션을 성공적으로 배포했습니다.🎉🍾🎊🙌

    총결산


    어쨌든, 이 훌륭한 게시물 중에서 우리는 다음과 같다.
  • Heroku에 어플리케이션을 성공적으로 구축 및 배포
  • 다음


    다음 섹션에서:
  • EMC 의 재구매를 Docker 저장소로 진행합니다.

  • Docker의 다른 명령은 다음과 같은 경험을 더욱 가치 있게 해줍니다.
  • 컨테이너 캐시 지우기
  • Docker 컨테이너 삭제, 중지
  • 추가 비용

  • 리셋 링크https://github.com/werickblog/docker_nodejs_app
  • 애플리케이션 링크https://docker-nodejs-app.herokuapp.com/
  • NodeJS에 대한 링크 다운로드https://nodejs.org/en/download/
  • Docker 링크 다운로드https://www.docker.com/get-started
  • docker가 뭔지 알기https://docs.docker.com/engine/docker-overview/
  • 좋은 웹페이지 즐겨찾기