openshift에서 데모 앱 호스팅

합동회사 kumanote 의 Tanaka입니다.

openshift 을 사용하여 작은 웹 앱을 만들 수있는 기회가 있으며 그 때의 메모를 소개합니다.

무료로 서버를 만들고 가볍게 데모를 할 때 등에 편리합니다.

openshift란?



Openshift는 redhat이 배포하는 클라우드 서버 서비스입니다.
(Google이나 AWS와 같은 느낌이군요)

사용해 본 소감은 다음과 같습니다.
  • Google의 Google Container Engine 근처
  • redhat의 Kubernetes 사랑을 느낀다
  • 학습 비용이 다소 높고, 작은 앱 공개에 적합하지 않다.
  • Kubernetes를 다소 이해해야합니다

  • Openshift 문서은 풍부하지만 처음 온 사람들에게는 힘들어
  • 한 번 이해해 버리면, demo 할 때는 가장 빠를지도 (향후도 일마다 이용하고 싶다)


  • 실시한 것



    이하 실시한 것을 기재합니다.
    이번에는 데모 페이지를 공개하고 싶었기 때문에 · ·
    최종 목표는 정적 파일(html/image/css/js)을 전달하는 서버를 설정하기 전까지입니다.
    (··하지만, db등도 사용할 수 있으므로, 간단한 어플리케이션은, 무료로 만들 수 버리는 기능이 갖추어져 있습니다.)

    sign up



    우선은 등록으로부터입니다.
    여기 에서 등록할 수 있습니다.
    신용카드 등록이 필요 없습니다.

    ※ 1 project 무료로, 72시간마다 18시간 sleep하는 것 같기 때문에, 상용 이용은 거의 불가능합니다.




    프로젝트 만들기



    웹 콘솔이 열리면 모든 GUI로 프로젝트를 만들 수 있습니다.



    프로젝트 개요를 입력합니다.


    자바스크립트를 선택합니다.


    Node.js v6을 선택합니다.


    배포하려는 Github의 리포지토리를 입력합니다.
    private repository OK입니다 →이 경우 github 저장소에 배포 키를 등록하고 ssh의 private key를 openshift 프로젝트에 등록해야합니다.
    또한 github에 webhook을 등록할 수도 있고, 브랜치를 push한 것만으로, 빌드~배포가 자동화할 수 있는 것도 매력이었습니다.


    이것만으로 움직입니다. 상당히 대단합니다.
    다만, 동작 원리를 알 때까지 상당한 시간을 사용했습니다. Document를 좀 더 알기 쉽게 해 주었으면 합니다. .

    이하, 나 나름의 이해입니다.
  • openshift는 소스 코드에서 컨테이너 이미지를 동적으로 만드는 기능 (s2i라고 함)이 있습니다.
  • 위와 같이 카탈로그를 선택한 경우(node ​​template를 사용한 경우) npm install 이후 프로젝트 루트 npm start

  • package.jsonstart script 그렇다면 마음대로 image가 만들어진다 ← 이것을 알 때까지 사고팔고했습니다.

  • 위와 같이 카탈로그를 선택했을 경우(node의 template를 사용한) 경우, 카탈로그에서 정의된 service나 pod가 마음대로 일어나서 서비스가 공개된다.

  • 소스 코드 업



    다음과 같이 요점을 잡고
  • package.json
  • scripts.start 를 기술해, server.js 를 부르도록(듯이) 했습니다.
    {
      "name": "kumanote-test",
      "version": "1.0.0",
      "description": "",
      "author": "kumanote,LLC.",
      "main": "server.js",
      "private": true,
      "scripts": {
        "dev": "node build/dev-server.js",
        "build": "node build/build.js",
        "lint": "eslint --ext .js,.vue src",
        "test": "IP=0.0.0.0 PORT=3030 mocha --timeout 5000 tests/*_test.js",
        "start": "node server.js"
      },
      "dependencies": {
        "chai": "^3.5.0",
        "chai-http": "^2.0.1",
        "mocha": "^2.4.5",
        "express": "^4.13.4"
      },
      "engines": {
        "node": ">= 4.0.0",
        "npm": ">= 3.0.0"
      },
      "browserslist": [
        "> 1%",
        "last 2 versions",
        "not ie <= 8"
      ]
    }
    
  • server.js
  • dist 아래에 게시할 파일을 배치했습니다.
    또, port 이나 ipprocess.env.OPENSHIFT_NODEJS_PORT 이나 process.env.OPENSHIFT_NODEJS_IP 의 지정이 필요합니다.
    var express = require('express'),
        app     = express();
    
    var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080,
        ip   = process.env.IP   || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0';
    
    app.use(express.static(__dirname + '/dist'));
    
    // error handling
    app.use(function(err, req, res, next){
      console.error(err.stack);
      res.status(500).send('Something bad happened!');
    });
    
    app.listen(port, ip);
    console.log('Server running on http://%s:%s', ip, port);
    
    module.exports = app;
    

    이상이 됩니다.

    좋은 웹페이지 즐겨찾기