LoginSignup
22
4

More than 1 year has passed since last update.

Elixir/Phoenixをdocker環境で立ち上げてみる。

Last updated at Posted at 2022-12-03

はじめに

はじめまして、naritomoと申します。

本職はインフラエンジニアを行っています。
個人的にいじっているElixir系についてなにか投稿しようと
思って作成してみました。

初めての投稿なのでいろいろアドバイスいただけると嬉しいです。

立ち上げ概要

windows11を使用してwsl2+Ubuntu+vscode環境を作り、
docker-composeを使用して立ち上げるものになります。

必要なソースは以下にまとめてあります。

なぜ、あえてDockerなのか?

インフラエンジニアとしてDockerから触れたほうが扱いやすく、
以下の利点を感じられたため、開発環境構築ではDockerを使用することを
推しています。

  • OS問わず同じ開発環境での開発が可能
  • インフラ/アプリエンジニアでのコラボがしやすい。
      (具体的にはインフラ屋でOS/開発環境のベース環境を構築し、
      アプリエンジニアで本来行うべき開発業務に集中できる。)
  • 本番Web環境で多く使用されているAWS/AzureなどのIaaSサービス
     に対し、Docker資産を使用できる。

一応、本番環境展開にPaaSを使用する手はありますが、
AWS/Azureを絡めたほうが業務につながるとみています。

構築される環境

  • Phoenix1.5

    • Erlang/OTP 23
    • Elixir 1.11.3
    • Phoenix 1.5.7
  • Phoenix1.6

    • Erlang/OTP 24
    • Elixir 1.13.4
    • Phoenix 1.6.15
  • Phoenix1.7

    • Erlang/OTP 25
    • Elixir 1.14.3
    • Phoenix 1.7.1

必要なソフトウェア

  • Docker 20 以上
  • Docker Compose 1.27 以上

動作確認済みのOS

  • Windows11(wsl2上のUbuntuから稼働)

構築方法

windoows11上にwsl/Ubuntu22.04をインストールする。

参考>
Ubuntu 22.04でElixirの最短手順

作業実施後、以下のコマンドをwindowsコマンドプロンプトで実施する。

wsl --unregister Ubuntu
wsl --set-default Ubuntu-22.04
wsl --list --verbose

docker-desktopをインストールする。

従業員250人以上かつ年間売上高1000万ドル以上の企業利用の場合、
有料となるため注意

参考>
Docker Desktop インストール手順

Docker Desktopを使用しない(できない)場合、以下のサイトを参照

DockerDesktopからWSL2上のみで動くDockerに移行する

vscodeのインストールを行い、wsl2内のUbuntuコンソールを開く

以下のサイトを参考に、vscodeのインストール/Ubuntuコンソールを開く。

参考>
WSL2 + Ubuntu + VSCodeでの開発環境構築

dockerコンテナクローン、デプロイ、立ち上げ

*Phoenix1.5利用
git clone https://github.com/naritomo08/elixir-docker-db.git elixir-docker-db
*Phoenix1.6利用
git clone -b phx1.6 https://github.com/naritomo08/elixir-docker-db.git elixir-docker-db
*Phoenix1.7利用
git clone -b phx1.7 https://github.com/naritomo08/elixir-docker-db.git elixir-docker-db

*上記について、それぞれ別名フォルダで立ち上げればそれぞれの
 バージョン用として共存できます。

cd elixir-docker-db
sudo bin/setup.sh
sudo bin/start.sh
sudo bin/login.sh
→この時点でElixirプログラミング可能

後にファイル編集などをして、git通知が煩わしいときは
作成したフォルダで以下のコマンドを入れる。

 rm -rf .git

Webサイト作成

mix phx.new testsite --database postgres
→yを選択する。
cd testsite
vi config/dev.exs
"hostname: "postgres","にする。
*Phoenix1.6/1.7の場合
"http: [ip: {0, 0, 0, 0}, port: 4000],"にする。
vi config/test.exs
"hostname: "postgres","にする。

DB作成

mix ecto.create

サイト立ち上げ

mix phx.server

サイト参照

ブラウザで以下のURLを参照してサイト参照できることを確認する。

DB管理ツール(adminer)にも参照できることを確認する。

  • ログイン情報(postgresql)

    • データベース種類: Postgresql
    • サーバ: postgres
    • ユーザ名: postgres
    • パスワード:postgres
  • ログイン情報(mariadb)

    • データベース種類: mysql
    • サーバ: mariadb
    • ユーザ名: root
    • パスワード:root

サイト停止

Ctrl+c を2回押すことで停止可能

コンテナ停止

*コンテナに入っている場合
exit

sudo bin/stop.sh

コンテナ起動

sudo bin/start.sh

Elixirコンテナログイン

sudo bin/login.sh

コンテナ削除

docker-compose down

作成したソースを流用したい場合

サイト作成したあと、以下のフォルダ内をgithubなどに保管すれば、
他の開発/本番環境へソースを持っていって利用できます。

apps/testsite

本docker環境に持っていきたい場合、
"dockerコンテナクローン、デプロイ、立ち上げ"したあと、
別ターミナルで上記フォルダ(別名でも可)へ使用したいソースを入れて、
もとのターミナルでソースを入れたフォルダに移動して
"サイト立ち上げ"を実施すればひとまず立ち上がるはずです。

他環境で本ソースを使用した立ち上げ方は、
ここでは割愛いたします。

おわりに

合わせてDBなし版のコンテナも作っていますので、
参照いていただいて指摘をいただけると嬉しいです。

Phoenix1.6/1.7を使用したい際は、phx1.6/phx1.7ブランチに切り替え
参照してください。

Phoenixサイト作成アラカルトについて、
以下の場所にもまとめていますので、
是非参照ください。

本記事以外にもruby/phpについても同様のものを上げていますので、
参照していただいてこちらにも挑戦していただければと思います。

NeosとElixir/Phoenix連携も行ってみました。

22
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
4