docker+alpine+cloud9で最速・最軽量IDE環境を用意する
当記事は、Docker Advent Calendar 2018の18日目です。
はじめに
当記事では、dockerを用いて、サーバーサイドで動く素敵なIDE、cloud9
を簡単に構築し、
なおかつalpine Linuxを使うことでできるだけ軽量化しています。
Cloud9を知らない方のために
一言で言うと、サーバーサイド管理のIDEです。
サーバー側に情報を持つので
- Webでアクセスするだけで、統合開発環境が使える
- PCが変わっても同一の環境を維持できる
- 複数の人間で作業ができる
- 複数の環境を用意すれば、ブラウザでタブごとにリソース編集を切り替える
などのことが可能になります。
現在では、AWSの環境で使われているのが一般的になりました。
しかし、ソースコードがgithubで公開されているので、AWS環境以外の環境でも使うことが出来ます。
結論
これを実行して下さい
command
docker run --rm -d -v /path/to/workspace:/workspace -p 8080:8080 sshinya/alpine-cloud9
認証情報変える場合はこっち
command
docker run --rm -d -v /path/to/workspace:/workspace -p 8080:8080 -e USERNAME=user -e PASSWORD=pass sshinya/alpine-cloud9
docker-composeだとこんな感じ
docker-compose.yml
# This is sample file
services:
cloud9:
image: sshinya/alpine-cloud9
volumes:
- /path/to/workspace:/workspace
environment:
USERNAME: user
PASSWORD: pass
ports:
- "8080:8080"
以下、解説・構築手順
対象OS
docker run --rm -d -v /path/to/workspace:/workspace -p 8080:8080 sshinya/alpine-cloud9
docker run --rm -d -v /path/to/workspace:/workspace -p 8080:8080 -e USERNAME=user -e PASSWORD=pass sshinya/alpine-cloud9
# This is sample file
services:
cloud9:
image: sshinya/alpine-cloud9
volumes:
- /path/to/workspace:/workspace
environment:
USERNAME: user
PASSWORD: pass
ports:
- "8080:8080"
対象OS
今回、対象となるAlpine Linuxは3.7を使用しています。
最新版は3.8なのですが、どうしても構築に失敗してしまいトラブルシューティング中です。
(原因わかる方おられましたらコメントいただけると幸いです)
必要なモジュール
cloud9を動かすためのモジュールは以下のものを入れていきます。
Alpineなので、 apk add
を使って入れていきます。
(CentOSでいうyum
、Ubuntuでいうapt-get
)
- bash
- git
- nodejs
- make
- gcc
- g++
- python
- curl
- wget
- build-base
- openssl-dev
- apache2-utils
- libxml2-dev
- sshfs
- tmux
- supervisor
その他必要な作業
- cloud9の公式リポジトリから、ソースコードをClone
- 環境構築用のスクリプトもダウンロード&実行
- 最後にcloneしてきたモジュールの中の、installスクリプトを実行
# cloneしてくる
git clone https://github.com/c9/core.git /c9
# 公式環境構築用スクリプト実行
curl -s -L https://raw.githubusercontent.com/c9/install/master/link.sh | bash
# マウントポイント作成
mkdir -p /workspace
# インストール実行
cd /c9
./scripts/install-sdk.sh
Dockerとしての設定
workspace領域(マウントポイント)の登録
VOLUME ["/workspace"]
WORKDIR /workspace
アクセスするポートの設定(今回はとりあえず8080)
EXPOSE 8080
cloud9実行時のBasic認証ID/PASSの設定(デフォルト値)
ENV USERNAME user
ENV PASSWORD pass
最終的なDockerfile
FROM alpine:3.7
LABEL maintainer "shinya"
RUN apk add --update --no-cache bash git nodejs make gcc g++ python curl wget build-base openssl-dev apache2-utils libxml2-dev sshfs tmux supervisor \
&& rm -f /var/cache/apk/* \
&& git clone https://github.com/c9/core.git /c9 \
&& curl -s -L https://raw.githubusercontent.com/c9/install/master/link.sh | bash \
&& mkdir -p /workspace \
&& cd /c9 \
&& ./scripts/install-sdk.sh
VOLUME ["/workspace"]
WORKDIR /workspace
EXPOSE 8080
ENV USERNAME user
ENV PASSWORD pass
ENTRYPOINT ["sh", "-c", "/usr/bin/node /c9/server.js -l 0.0.0.0 -p 8080 -w /workspace -a $USERNAME:$PASSWORD"]
ここにDockerfile置いています。
shinya/alpine-cloud9
あとは実行すれば、IDE環境がいっちょ上がり!
実際の画面
起動に成功すれば、アクセスすると最初に認証の画面が出てきます。
認証が通ると起動画面になり・・・・
しばらくすると、「Welcome」の画面に切り替わります
あとは、エンジニア魂をぶつけながら、コーディングするべし!
おまけ
個人的に、Go言語の勉強をする環境がほしかったので、Go対応版も作りました。
Cloud9の中でRunボタンを押すことでコンパイルできるようになっています。
docker run --rm -d -v /path/to/workspace:/workspace -p 8080:8080 sshinya/alpine-cloud9:golang
Go言語版Dockerfile詳細
AlpineがGo言語版になっているのと、環境変数を設定しているのが違う点です。
FROM golang:alpine3.7
LABEL maintainer "shinya"
RUN apk add --update --no-cache bash git nodejs make gcc g++ python curl wget build-base openssl-dev apache2-utils libxml2-dev sshfs tmux supervisor \
&& rm -f /var/cache/apk/* \
&& git clone https://github.com/c9/core.git /c9 \
&& curl -s -L https://raw.githubusercontent.com/c9/install/master/link.sh | bash \
&& mkdir -p /workspace \
&& cd /c9 \
&& ./scripts/install-sdk.sh
VOLUME ["/workspace"]
WORKDIR /workspace
# Expose ports.
EXPOSE 8080
ENV USERNAME user
ENV PASSWORD pass
ADD env /root/.bashrc
ADD env /root/.profile
ENTRYPOINT ["sh", "-c", "/usr/bin/node /c9/server.js -l 0.0.0.0 -p 8080 -w /workspace -a $USERNAME:$PASSWORD"]
PATH=$GOPATH/bin:/usr/local/go/bin:$PATH
おわりに
もう、IDEをPCの中にインストールする時代は終わったのかも知れません。
これからは、サーバーサイドIDEをぜひお試しあれ!
Author And Source
この問題について(docker+alpine+cloud9で最速・最軽量IDE環境を用意する), 我々は、より多くの情報をここで見つけました https://qiita.com/ssaita/items/17d78d6a9449dcb5c7b4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .