Eclipse CheでWebでのIDEを提供する～EHW2018「開発環境整備⑤」

# 概要

このエントリは、「Enterprise "hello, world" 2018 Advent Calendar 2018」の12/2向けのものです。このAdvent Calendarでは、複数個のエントリにまたがる話の流れも鑑みつつ、なるべく1エントリで１つのトピックをカバーできるようにする予定です。

このエントリで記載するトピックは、[Eclipse Che](https://www.eclipse.org/che/)でWebでのIDEを提供することです。

これまでのエントリと本エントリで、下図のような世界になります。

![EHW2018DevEnv(2).png](https://qiita-image-store.s3.amazonaws.com/0/65002/a0d6f52b-48ca-b9cd-dda1-827fde2a3063.png)


# 前提

## おことわり

- このEnterpfise "hello, world"シリーズは、ネタのためのエントリです。実環境でそのまま利用ことを目的とはしていません。
- 動かしやすさを優先してセキュリティを意図的に低くする設定など入れてありますのでご注意ください。

## 想定読者

「Enterprise "hello, world" 2018」的なネタとしては、下記のような状況を想定しています。

> Gitリポジトリはできた。そこに格納するソースコードを作る場所も提供するのである。なぜならEnterpriseだから。

# Eclipse Cheの導入

## Eclipse Cheとは

サイトの見出しでは"Eclipse Che is a developer workspace server and cloud IDE built for teams and organizations."とのこと。

何が得られるかというと、Webブラウザで、IDEが使えるようになります。少なくともそういう状況を目指したものです。

以下、本家サイトの["Running single-user Che on Docker"](https://www.eclipse.org/che/docs/che-6/quick-start.html)に従って作業を進めていきます。

## 動作の種類

Cheの導入ガイドでは、シングルユーザ用、マルチユーザ用など、複数の動作の種類を説明しています。
本エントリでは、時間と利用資源の都合上、シングルユーザ用のものを利用します。（Advent Calendarの中で、必要に応じてマルチユーザも検討します。）

## Che用のIPエイリアスの指定

Cheを動かしたいマシンのIPを調べて、エイリアスを作ります。

まず、IPを調べます。そのためのコマンドがコンテナとして用意されています。

```shell-session
 sudo docker run --rm --net host eclipse/che-ip:nightly
10.0.2.15
```

これまでのAdvent Calendar通りに進めてきた場合、Samba, GitLabなどにもエイリアスを作っているので、Che用には:3としてIPを割り当てます。(本家のサイトは、本エントリ執筆時点ではmacOS用のコマンドが書かれていますが、本エントリではUbuntu1804条で作業しています)

```
sudo ifconfig 10.0.2.15:3 192.168.3.200 netmask 255.255.255.0 up
```

## docker-compose.yml

.envファイルに、上記で作ったIPのエイリアスを利用して、以下のような変数を作り

```shell
（Advent Calendar第11日目の内容）

CHE_ADDR=192.168.3.200
```

本家のサイトのdockerコマンドからの起動をもとに、docker-compose.ymlを作ります。

```
（Advent Calendar第11日目の内容）

  che:
    image: 'eclipse/che'
    command: "start"
    environment:
      - CHE_HOST=${CHE_ADDR}
      - CHE_PORT=28080
    networks:
      - extnet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - '${CONF_DIR}/che/data:/data'
    links:
      - samba
      - gitlab
```

(補足)portを自分で指定すると、「ERROR: Ports required to run che are used by another program.」となり、cheが起動しませんでした。

## 起動

docker-compose upすればOKです。

Advent Calendar的には、すでに他のサービスが動いている状況なので、cheだけupします。

```
$ sudo  docker-compose up che
```

起動しました。

```shell-session
che_1_1ccc73e6f6a7 | WARN: Bound 'eclipse/che' to 'eclipse/che:6.15.0'
che_1_1ccc73e6f6a7 | WARNING: No swap limit support
che_1_1ccc73e6f6a7 | WARN: Did not detect TTY - interactive mode disabled
che_1_1ccc73e6f6a7 | INFO: (che cli): 6.15.0 - using docker 18.09.0 / native
che_1_1ccc73e6f6a7 | WARN: Newer version 'rc' available
che_1_1ccc73e6f6a7 | INFO: (che config): Generating che configuration...
che_1_1ccc73e6f6a7 | INFO: (che config): Customizing docker-compose for running in a container
che_1_1ccc73e6f6a7 | INFO: (che start): Preflight checks
che_1_1ccc73e6f6a7 | WARNING: No swap limit support
che_1_1ccc73e6f6a7 |          mem (1.5 GiB):           [OK]
che_1_1ccc73e6f6a7 |          disk (100 MB):           [OK]
che_1_1ccc73e6f6a7 |          port 28080 (http):        [AVAILABLE]
che_1_1ccc73e6f6a7 |          conn (browser => ws):    [OK]
che_1_1ccc73e6f6a7 |          conn (server => ws):     [OK]
che_1_1ccc73e6f6a7 |
che_1_1ccc73e6f6a7 | INFO: (che start): Starting containers...
che_1_1ccc73e6f6a7 | INFO: (che start): Services booting...
che_1_1ccc73e6f6a7 | INFO: (che start): Server logs at "docker logs -f che-28080"
che_1_1ccc73e6f6a7 | INFO: (che start): Booted and reachable
che_1_1ccc73e6f6a7 | INFO: (che start): Ver: 6.15.0
che_1_1ccc73e6f6a7 | INFO: (che start): Use: http://192.168.3.200:28080
che_1_1ccc73e6f6a7 | INFO: (che start): API: http://192.168.3.200:28080/swagger
second-dev-env_che_1_1ccc73e6f6a7 exited with code 0
```

例によって、ポート転送を指定して、

![port-28080.png](https://qiita-image-store.s3.amazonaws.com/0/65002/b09f7c51-ff43-f33a-c1a6-675f3db27d0d.png)

ブラウザから接続します。

![che-home.png](https://qiita-image-store.s3.amazonaws.com/0/65002/572f03b8-05d9-2463-9c6d-63480cb243d3.png)


# まとめ

このエントリでは、「Enterprise "hello, world" 2018 Advent Calendar 2018」(EHW2018)の12日目として、Eclipse CheでWebでのIDEを提供することをトピックとして取り上げました。

EHW2018のネタとしては、このあと、