VPSにDockerを導入して開発用イメージを準備する

VPS上にDockerをインストールして使い捨ての開発環境を用意する

Dockerをインストール

dockerをインストールする

$ sudo yum install docker

dockerを起動する

$ sudo systemctl start docker
$ sudo systemctl enable docker
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'

開発用イメージを作成する

ベースイメージを取得する

$ sudo docker pull centos:centos7

作業用コンテナ(working)を起動する

$ sudo docker run -t -i --name working centos:centos7 /bin/bash

EPELリポジトリをインストールする

# yum install -y epel-release

開発ツールをグループインストールしてコンテナを終了する

# yum groupinstall -y "Development tools"
...
Complete!
# CTRL-d

開発用イメージを作成(commit)して、作業用コンテナ(working)を削除する

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
7cfdecd599cb        centos:centos7      "/bin/bash"         2 minutes ago       Exited (0) 11 seconds ago                       working  
$ sudo docker commit working devel:centos7
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
devel               centos7             f97fe69c8935        36 seconds ago      522 MB
docker.io/centos    latest              fd44297e2ddb        12 days ago         215.7 MB
docker.io/centos    7                   fd44297e2ddb        12 days ago         215.7 MB
docker.io/centos    centos7             fd44297e2ddb        12 days ago         215.7 MB
$ sudo docker rm working

開発用イメージからNode.js開発用コンテナを起動する

接続用のポートを一時的に開ける

$ sudo firewall-cmd --add-port=3000/tcp --zone=public
$ sudo firewall-cmd --list-ports
3000/tcp

Node.js開発用コンテナを起動する

  • ホスト3000番ポート と コンテナ80番ポート をバインドする
  • http://ip:3000/ でアクセスできるようになる
$ sudo docker run -t -i -p 3000:80 --name nodejs devel:centos7 /bin/bash

Hello World!(app.js)

var http = require("http");
http.createServer(function (req, res) {
    res.writeHead(200, {"Content-Type": "text/plain"});
    res.end("Hello World\n");
}).listen(80, "0.0.0.0");

nodeアプリ実行、アクセスを確認、終了

# node app.js
# CTRL-d

接続用のポートを閉じる

$ sudo firewall-cmd --remove-port=3000/tcp --zone=public