調べるブログ

Apple製品(Mac/iPhone/iPad)、IT、仮想通貨など自分が調べた様々なことを記事にしています。

Dockerで関数型プログラミング言語「Elixir」の実行環境を構築する

当ブログへのご来訪、誠にありがとうございます。



プログラミング言語 Elixir

プログラミング言語 Elixir は難しい。

Elixirは並行処理の機能や関数型と行った特徴を持つ、Erlangの仮想マシンBEAM上で動作するプログラミング言語なのであるが、とにかくとっつきにくい。

そもそも環境構築からしてやっかいだ。言語の概念を勉強してElixir+Phoenixの環境構築と動作確認から始めていたら時間がどんどん過ぎていく。

プログラミングElixir

プログラミングElixir

 

 

環境を壊してしまった時もやっかいだ。ESXiがあればスナップショットでサクッと以前のバージョンに戻すことが出来るが、あいにくと自宅にまでその環境を用意してはいない。で、こまめにVMware Playerのバックアップを取ったりしていたのだが、この時間泥棒な環境がなかなか辛くなってきて勉強を始めたのがDockerだ。

 

DockerでElixirの実行環境を作り、動作確認する

Dockerについては数週間前に会社の同僚から解説本を借りたのだが、概念やらインフラやらの説明が長々と続き、なかなか本筋に入ってくれない。やっとDockerのインストールかと思えばWindows環境下での説明になっていた...。(ノ`Д´)ノ彡┻━┻

この本では先に進みそうもないと思い、ドットインストールのDockerに関する動画を視聴して、VMware Player上のUbuntu 16.04にDockerをインストールしてみたのだった。

Dockerのインストール

インストール手順については以下のQiitaの記事を参考にした。

qiita.com

 

Elixirの実行環境イメージ入手と動作確認

sudo docker pull elixir

でイメージを入手し、コンテナを起動してみる。

 

$ sudo docker run -it elixir bash
root@3886c3f52208:/#
root@3886c3f52208:/# elixir --version
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

Elixir 1.7.3 (compiled with Erlang/OTP 21) 

 

実際はpullしなくてもrun時にイメージがなければ取りに行くようだ。

 

対話型のiexも起動してみる。

root@d1e222414c89:/# iex
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 

 

終了させる。 

root@3886c3f52208:/# exit 
$

 

変更した内容をcommitで保存する

コンテナ実行環境にはgitもインストールされていたので、言語の勉強時に書いた、残しておきたいソースはGitLabのプライベートリポジトリにでもコミットしておくといいのだろうか。

データを残しておきたい場合は

$ sudo docker container ps -a

でcontainer IDを調べて

$ sudo docker container stop xxxxx

でコンテナを停止する。(xxxxxは先に調べておいたcontainer IDを入力する)

$ sudo docker container commit xxxxx yyyyy 

を実行してcommitされ、変更したデータは保存される。(yyyyyはコンテナ名)

試しに起動してみると変更したデータがcommitによって保存されていることが確認できるだろう。

$ sudo docker run -it yyyyy bash

 

このやり方だとcommitを忘れるとデータが消えて悲しいことになるので、設定で永続的ボリュームに接続するやり方が一般的らしい。 以下のQiitaの記事が参考になると思う。

qiita.com

 

筆者のようにDockerそのものを触ったことがないという初心者の方は、以下の記事が参考になるだろう。

qiita.com

 

今度時間がある時にDockerでWebアプリケーションフレームワーク「Phoenix」の環境も作ってみたい。(VM上でPhoenix開発環境を作ってはいるが、バックアップを取るのが面倒)

Elixir/Phoenix 初級?: はじめの一歩 (OIAX BOOKS)

Elixir/Phoenix 初級?: はじめの一歩 (OIAX BOOKS)

 

 

初めてDockerに触ってみたのだが、非常に便利で時間短縮にもなり、今後開発や学習環境はDockerに移そうと思う。

※Dockerを使い始めてまだ1日目なので用語等の誤りがあったらご容赦願いたい。


  • 当ブログは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。
  • 当ブログ記事の2ch系まとめサイトへの無断転載を禁じます。
  • 投稿した記事内容は私的なものであり、所属する組織・団体に関連性はありません。
  • 投資にはリスクが伴います。利益を得る反面、損失もありえます。投資活動は自己責任で。

(C)LOXLEY-TIPS