Elixir 挑戦記
- 統合的アプローチによる学習
- とりあえず手を動かしてみるシリーズ
- 調べたり取り組んだりした内容をひたすら書いていく
- あとで整理してまとめたい
今回の記事について
こちらの記事を参考に、開発環境を作成
フォルダ構成
dev
├ app (mix project)
│ ├─ 自動生成されたファイル群(mix.exs など)
│ └─ run.sh
├ data (ノートブック置き場)
├ docker-compose.yml
└ Dockerfile
各ファイルの設定
run.sh
cd /app
mix local.hex --force
mix local.rebar --force
mix deps.get
mix compile
iex --sname sname@app --cookie cookie -S mix
docker-compose.yml
---
version: "3.2"
services:
app:
build: .
tty: true
volumes:
- ./app:/app
- _build:/app/_build # Volume Trick
- deps:/app/deps # Volume Trick
livebook:
image: livebook/livebook:0.8.1
ports:
- 8080:8080
environment:
- LIVEBOOK_COOKIE=sname
- LIVEBOOK_DEFAULT_RUNTIME=attached:sname@app:cookie
volumes:
- ./data:/data
volumes:
_build:
deps:
Dockerfile
FROM hexpm/elixir:1.14.3-erlang-25.2.3-ubuntu-jammy-20221130
RUN apt-get upgrade -y \
&& apt-get update \
&& apt-get install -y \
sudo \
unzip \
vim \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
CMD [ "/bin/bash", "/app/run.sh" ]
動かし方
cd dev
docker compose build
docker compose up
作業方法
-
http://localhost:8080
でLivebookに繋いでコーディング-
mix.exs
で指定したdepsパッケージも利用可能- 変更時は
IEx.Helpers.recompile()
で対応できる
- 変更時は
-
dbg/0
で効率アップを狙いたい
-
- 最終的に
*.exs
としてエクスポートし、プロジェクトに含める- 順次実行で処理の流れを確認しやすい
*.livemd
も手元に残る
- 順次実行で処理の流れを確認しやすい
気になること
.devcontainer
を利用すれば 開発 / 実行 の設定を分けられそうな気がするけど、一旦置いておく