Dockerfile を作成する(CentOS7 + node 編)
Docker をのんびり触り始めてはや1ヶ月弱、ついに Dockerfile を自作し始めることにした。ということで第一弾がこちら。
redsnapper/dockerfile_centos_nodejs
https://hub.docker.com/r/redsnapper/dockerfile_centos_nodejs/
---
自分はあまりクライアント(Mac)にあれこれ入れるのが好きではなく(整理が下手くそで何が何やら分からなくなる時があるため・・・)、フロントであっても何か作業する時は仮想環境を持ちたいと思う人間である(いつでもぶっ壊せるように)。
そこで今回は、よく使う nodejs が入った環境を用意できる Dockerfile を作成することにした。冒頭のリンク先がそれである。
---
以下、作成するにあたり気になった点をメモしておく。
<CentOS について>
CentOS が公式で提供している CentOS の Image はとてもキレイな状態なので、何かコマンドを打ちたいと思ったら先に yum install しておく必要がある。
<PATH について>
PATH を通す際、Dockerfile では「ENV」を使うということを知った。
ENV PATH $HOME/.nodebrew/current/bin:$PATH
参考:Modifying an image's PATH variable · Issue #684 · docker/docker · GitHub
これで、後半の nodebrew コマンドを使った処理が走るようになる。
なお、Dockerfile の Build 処理終了後、centos の Container で引き続きその PATH を活かしたいため、Dockerfile 内で .bashrc に PATH を書き込む処理を加えておいた。
RUN echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> $HOME/.bashrc && \
source $HOME/.bashrc && \
---
完成した Dockerfile は、DockerHub で公開することにした。
<作業の流れ>
- GitHub に Dockerfile を push する
- DockerHub で「Created Automated Build」機能を使い、GitHub と連携して Repository を作成する
Repository 作成後、Build に時間がかかるためしばし待機。それが終われば GitHub の内容(Dockerfile)が表示されるようになる。
---
やっと念願の、自分で Dockerfile を作って他者と共有するという作業がスムーズにできるようになった。
今後は、今回作成した Dockerfile をベースに、例えば bower や gulp といった開発ツールを用意し、スムーズにフロントエンド開発に入れるようなファイルを作っていきたいなあ。
---
ちなみにこの centos を導入してローカルで作業したいなと思ったら次のように Container を作ると良い。
$ docker run -it -v /{ローカルの作業用ディレクトリ名}:/home/{任意のディレクトリ名} --name {Container の名前} {Image の ID}
こうすることで「{ローカルの作業用ディレクトリ名}」で作業した内容が centos 内の「/home/{任意のディレクトリ名}」にも反映される。
他にも docker run のオプションは色々と書きようがあるので、自分の都合の良い使い方をしてもらえるとうれしい。
---
とりあえず、ここまでこれてうれしい。