LoginSignup
3
8

More than 5 years have passed since last update.

PCが重いのでクラウド上に開発環境を構築してみた

Last updated at Posted at 2018-10-10

tl;dr

  1. VPS 上の docker-compose を利用して OSS の Web IDE(c9 core) を導入した。
  2. ローカル環境の CPU の負荷は軽くなった(体感)。
  3. ローカル環境の メモリ の負荷が高くなった(体感)。

実行環境

ローカル環境

  • Model: MacBook Air(11-inch, Early 2014)
  • CPU: 1.4 GHz Intel Core i5
  • Mem: 4 Gb 1600 MHz DDR3
  • OS: macOS Mojave ver10.14

クラウド環境

  • Model: さくらのVPS
  • CPU: 3コア
  • Mem: 2G
  • OS: CentOS 7.5

経緯

どうやら都会ではDockerやらコンテナやらが流行っていると聞く。
早速、試してみようと思ったが、私の MacBook Air が悲鳴を上げ始めた。

導入手順

クラウド環境入手

今回はさくらのVPSを利用しております。

他にも選択肢はあると思いますので、それぞれの状況に合わせてご検討ください。

クラウド環境へアクセス

SSHでVPSにログインする。

[user@local_env] ssh root@0.0.0.0

※ご自身の環境に合わせてIPアドレスを変更してください。

docker-composeのインストール

さくらのVPSの場合はパブリックスクリプトを利用して導入可能です。

OS毎にインストール方法の誤差があるかと思いますので、それぞれの環境に合わせてインストールを行ってください。

今回は本題から逸れるため他の方にお任せいたします。

[root@cloud_env] docker-compose -v
docker-compose version 1.14.0, build xxxxxx

Cloud9 Coreの導入

Cloud9 とは Web 上で実行できる開発環境になります。
本来はサービスに登録して、利用する必要があるのですが、
今回利用している Cloud9 CoreはIDE部分のみをOSSとして提供されているものになります。

# yumのアップデート
[root@cloud_env] yum update -y

# gitのインストール
[root@cloud_env] yum install -y git

# gitリポジトリからソースをcloneする
[root@cloud_env] git clone git://github.com/c9/core.git c9sdk
[root@cloud_env] cd c9sdk

# インストールのためのスクリプトを実行する
[root@cloud_env] scripts/install-sdk.sh

なんか失敗する

Error: please install make to proceed
To do so, log into your machine and type 'yum groupinstall -y development'
Error: please install gcc to proceed
To do so, log into your machine and type 'yum groupinstall -y development'
Error: please install glibc-static to proceed
To do so, log into your machine and type 'yum install glibc-static'

言われた通りにインストールする

[root@cloud_env] yum groupinstall -y development
[root@cloud_env] yum install -y glibc-static

# 再度インストールを試みる
[root@cloud_env] scripts/install-sdk.sh

無事インストールに成功するはず

次にアプリケーションを起動する

# server.js を実行する
[root@cloud_env] node server.js
-bash: node: command not found

なんでや。。。と思いつつ node をインストール

# 8系をインストールしたかったので下記手順を実行する
# nvm とか使いたい場合は別途実行する必要があります
[root@cloud_env] curl -sL https://rpm.nodesource.com/setup_8.x | bash -
[root@cloud_env] yum install -y nodejs
[root@cloud_env] node -v
v8.12.0

# 再度server.js を実行する
[root@cloud_env] node server.js

ここで動けば問題無し
しかし、docker上で動いているのでアクセスはできないはず

以下、手作業に疲れてきたのでDockerfileとdocker-compose.ymlを作成して実施します。

Dockerfile

FROM centos:latest

ENV APP_ROOT /var

WORKDIR $APP_ROOT

RUN yum update -y

RUN curl -sL https://rpm.nodesource.com/setup_8.x | bash -
RUN yum install -y nodejs

RUN yum install -y git
RUN git clone git://github.com/c9/core.git c9sdk

WORKDIR $APP_ROOT/c9sdk

RUN yum groupinstall -y development
RUN yum install -y glibc-static

RUN scripts/install-sdk.sh

docker-compose.yml

version: '3'

services:
  c9core:
    build: ${PWD}
    image: docker/c9:1.0.0
    container_name: c9core
    restart: always
    volumes:
      - /local_workspace:/cloud_workspace
    ports:
      - 8080:8080
    command: /bin/bash -c "node server.js --listen 0.0.0.0 -p 8080 -w /cloud_workspace -a USER:PASSWORD"
    tty: true
    privileged: true
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

以下、ご自身の環境に合わせて変更してください。

# ワークスペースの指定
-w クラウド上のワークスペース

# 認証情報の指定
# basic認証が必要なため
-a ユーザ名:パスワード

# IPアドレスとポートはそれぞれ指定
# 指定無しの場合はlocalhost:8080
--listen 0.0.0.0 -p 8080

docker-compose実行

ディレクトリ構成は以下を想定
root
  └ Dockerfile
  └ docker-compose.yml
[root@cloud_env] docker-compose build
[root@cloud_env] docker-compose up -d

指定したアドレスとポートにアクセスする
http://0.0.0.0:8080

たぶんできてる

追記(2018/10/10)

ポートの開放をお忘れなきよう

# 開放されているポート確認
[root@cloud_env] firewall-cmd --list-ports --zone=public

# 利用したいポートの開放
[root@cloud_env] firewall-cmd --add-port=8080/tcp --zone=public --permanent

# リロード
[root@cloud_env] firewall-cmd --reload

参考

https://github.com/c9/core
https://monopro.org/?p=338

3
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8