みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

技術書典7でElixir本「PhoenixLiveViewとNervesをさわるElixirへのいざない」を頒布します。

PhoenixLiveViewとNervesをさわるElixirへのいざない」というタイトルのElixir入門本を2019年9月22日の技術書典7で頒布する予定です。

本のタイトルの通り、Phoenix LiveViewNervesと呼ばれるプログラミング言語Elixirの2つのフレームワークについて、『実際にさわって体験をしてみよう』な内容となっています。

先日、「ねこのしっぽ」さんで早割入稿してきました。

これで、本については会場で受け取って頒布するだけです。

比較的余裕もできたので、紹介ページを用意しました。

サークル名は「URAMASU」です。
また、配置場所は「せ27D」で、会場の2F側です。詳細は下の会場画像を参照ください。

f:id:mzryuka:20190908224303p:plain

紹介文を読んで興味を持たれた方は、ぜひお寄りください。

また、サークルチェックもつけてくださると当日までの励みになります。


techbookfest.org

続きを読む

ElixirのDocker Imageで latest タグを付け替える

備忘。

ElixirのDocker Imageで、latestタグがバージョン1.8.1に割り当たっていた。
これを、バージョン1.9.1のものに変更する。

Docker image のtagを削除

docker image ls を実行すると、latest タグが elixirの1.8.1 に付与されていた。

$ docker image ls
REPOSITORY    TAG       IMAGE ID            CREATED             SIZE
elixir        1.9.1     3a74c2e86069        3 weeks ago         1.08GB
elixir        1.8.1     7923a9d70b5e        3 months ago        1.08GB
elixir        latest    7923a9d70b5e        3 months ago        1.08GB

そのため、タグを指定しないとElixirのバージョンは1.8.1でiexが起動される。

$ docker run -it --rm elixir
Erlang/OTP 21 [erts-10.3.5.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

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

docker rmi コマンドで、<REPOSITORY>:<TAG>の書式で削除したいTAGを指定する。
今回の場合は、elixir:latest を指定する。

$ docker rmi elixir:latest
Untagged: elixir:latest

その後、もう一度 docker image ls で確認する。

$ docker image ls
REPOSITORY    TAG       IMAGE ID            CREATED             SIZE
elixir        1.9.1     3a74c2e86069        3 weeks ago         1.08GB
elixir        1.8.1     7923a9d70b5e        3 months ago        1.08GB


あらためて、docker run で elixirを指定して実行みると、イメージのダウンロードが始まった。

$ docker run -it --rm elixir
Unable to find image 'elixir:latest' locally
latest: Pulling from library/elixir
9cc2ad81d40d: Pull complete
・・・

Docker image のtagを付与

新規取得ではなく、既存のDocker Image に別のImageファイルにタグ付をしたい場合。

この場合には、docker tag コマンドを利用する。

書式は、以下のイメージ。

docker tag <元のREPOSITORY>:<TAG> <付けたいのREPOSITORY名>:<つけたいTAG名>

今回は、「elixir:1.9.1」に「elixir:latest」とタグをつける。

$ docker tag elixir:1.9.1  elixir:latest

docker tagの場合、成功しても特にメッセージは出ない。

実行結果を docker image lsで確認する。

$ docker image ls
REPOSITORY    TAG       IMAGE ID            CREATED             SIZE
elixir        1.9.1     3a74c2e86069        3 weeks ago         1.08GB
elixir        latest    3a74c2e86069        3 weeks ago         1.08GB
elixir        1.8.1     7923a9d70b5e        3 months ago        1.08GB

タグlatestを、1.9.1と同じDocker Imageに設定することができた。

$ docker run -it --rm elixir
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

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

elixir:1.9.1側を起動しても同じもの。

$ docker run -it --rm elixir:1.9.1
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

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

参考URL:

blog.jnyo.net

ssh接続したUbuntu 19.04 でasdfコマンドが呼べなかった

Ubuntu 19.04 にインストールしたasdfコマンドをssh接続で利用しようとした際に遭遇。

概要:

asdfコマンドが利用できるUbuntu 19.04に対して別端末からsshでログイン。
その際に、asdfコマンドへのパスが通っていなかった。
同様の設定をしていた「CentOS 7.6」では、別端末からのsshログインでもasdfコマンドへのパスは通っていた。

原因は、Ubuntu 19.04側で中身が空の「 ~/.bash_profile 」ファイルを作成していたため。
~/.bash_profile 」 の削除後、ssh接続をやり直したらasdfコマンドへのパスも通った。

続きを読む

Maker Faire Tokyo 2019 に行ってきた

2019年8月3日、「Maker Faire Tokyo 2019」に行ってきました。

昨年に続いての参加です。備忘のため、簡単に参加レポートを書いておきます。

といっても、主に自分のTwitterの内容になります。動画も撮ってたので、それらの紹介もかねてということで。

 

makezine.jp

続きを読む

UbuntuデスクトップでDockerコンテナに任意のdnsを設定する

先日、ハマったproxy関連の対応についての続報。

mzryuka.hatenablog.jp

Ubuntu デスクトップ(19.04)でdnsの参照先が自身のIPアドレスしかない場合、コンテナ内の「/etc/resolv.conf」には勝手に「nameserver 8.8.8.8」「nameserver 8.8.4.4」が追加される。
そして、Proxy環境下ではこの設定が邪魔をして、elixirのmixコマンドが実行できなかった。

これに対応する場合の処理を見つけたので記述しておく。

続きを読む

ホストマシンの違いでコンテナ内でmix local.hexが実行できなかった話

よくある「Proxy環境下」でハマった話。

ElixirのPhoenix Frameworkの開発環境を作ろうと思い、Dockerfileを用意。
だが、同じDockerfileを使ってイメージ/コンテナを作成したにも関わらず、ホストマシンのOSの違いで「mix local.hex」コマンドが実行できる/できないが発生した。
どちらのDockerコンテナ内からも、curlwget、aptの実行は可能だった。

利用したホストマシンと実行結果は以下の通り。

  • CentOS 7.6 : mix local.hex が成功
  • Ubuntu 19.04 : mix local.hex が失敗

失敗時のエラー内容は、以下の通り。
コンテナ内で設定しているProxyを経由して外に出ようとしているが、何かしらの要因で外に出られない様子。

# mix local.hex
** (Mix) httpc request failed with: {:failed_connect, [{:to_address, {'proxy.local.jp', 8080}}, {:inet, [:inet], :nxdomain}]}

Could not install Hex because Mix could not download metadata at https://repo.hex.pm/installs/hex-1.x.csv.

エラーメッセージ中の「 {'proxy.local.jp', 8080}」はProxyサーバとポートの組み合わせ。
環境変数http_proxyhttps_proxyを追加する前は「{'repo.hex.pm', 443}」だったので、メッセージの1行目はto_addressに到達できない、という意味合いのエラーメッセージと考えられる。

結論:

ホストマシンが「Ubuntu 19.04」側のコンテナで、「/etc/resolv.conf」を修正したことで、エラーが解消できた。

続きを読む