遊び専用ですセキュリティーは無視してます
ソースはコンテナを改良をしないと外部に保存できません
技術的には可能ですが、今回は書きません
前提
下記がインストール済みであること
- Docker
- VSCode
環境作成
Elixir + sshd環境のイメージ作成
Dockerfile
FROM elixir:1.17.2-otp-26 as exec
RUN apt update -y && apt install -y build-essential inotify-tools npm git openssh-server
RUN mix do local.hex --force, local.rebar --force, archive.install --force hex phx_new
RUN mkdir /var/run/sshd; \
echo 'root:hoge' | chpasswd; \
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config; \
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
CMD ["/usr/sbin/sshd", "-D"]
上記Elixirイメージとdb起動の為のdocker-composeファイル
docker-compose.yml
version: '3'
services:
web:
build:
context: .
target: exec
dockerfile: Dockerfile
tty: true
links:
- db
ports:
- 4000:4000
- 2222:22
db:
image: postgres:15.3-alpine
environment:
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
起動
$ docker compose up -d
VSCodeでコンテナにアクセス方法
前提下記の拡張機能がインストール済みであること
- Remote - SSH: Editing Configuration Files
- Remote - SSH
sshでコンテナに接続
新規SSHホストを追加する
をクリック
VSCodeがもう一つ開くのでパスワードを入力
今回はhege
です
ターミナルからworkフォルダーを作る
ターミナルが無い場合
メニュー
のターミナル
→新しいターミナル
で表示できます
# mkdir work
Elixirのプロジェクトを作る
~/work# mix new hoge
testを実行(動作確認)
~/work# cd hoge
~/work/hoge# mix test
下記の画面になります
ソースを開く
エクスプローラーから
hoge/lib/hoge.ex
をクリックしてください
# ElixirLSのインストール
拡張機能からElixirLS
をインストールする
インストールが成功すると先ほどのhoge/lib/hoge.ex
がカラフルになります
ElixirLSはElixirの構文が見やすくなります
ソースを変更してみる
下記の2行を追加します
hoge/lib/hoge.ex
# 省略
def hello do
+ Enum.sum(1..5)
+ |> IO.inspect()
:world
end
# 省略
実行
~/work/hoge# mix test