Heroku의 Docker 컨테이너에서 노드 응용 프로그램을 호스팅하는 방법
11673 단어 devopsnodedockerjavascript
소개
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에 설치하려면 다음 두 가지 방법으로 수행할 수 있습니다.
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에 설치하려면 다음 두 가지 방법으로 수행할 수 있습니다.
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
우리의 build
과 image
에서 push
까지$ heroku container:push web
너는 너의 단말기에서 유사한 것을 보아야 한다배경에 무슨 일이 일어났습니까?
Container Registry
및 Dockerfile
설정에 따라 구축되었다.docker-compose.yml
를 통해 우리의 built
image
를 생성된 app
으로 전송합니다.$ heroku container:push web
이것은 터미널에 나타날 것입니다Heroku에 어플리케이션을 성공적으로 배포했습니다.🎉🍾🎊🙌
총결산
어쨌든, 이 훌륭한 게시물 중에서 우리는 다음과 같다.
다음
다음 섹션에서:
Docker의 다른 명령은 다음과 같은 경험을 더욱 가치 있게 해줍니다.
추가 비용
Reference
이 문제에 관하여(Heroku의 Docker 컨테이너에서 노드 응용 프로그램을 호스팅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wchr/how-to-host-your-node-app-in-a-docker-container-on-heroku-4ocd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)