2025年09月05日
やってみよう!Elixir / Phoenix 関数型プログラミングの基礎①
webアプリ開発

目次
開発環境構築手順(Dockerコンテナの構築)
作業ディレクトリの作成
次のコマンドを実行してください。
~$ mkdir -p ~/projects/phx_sample
~$ cd ~/projects/phx_sample
mkdirに-pをつけると親ディレクトリも一緒に作成します。ホームディレクトリの下にサブディレクトリprojectsが作られ、さらにその下にphx_sampleが作られます。作業ディレクトリ(phx_sample)に移動してvs codeを開きましょう。
コンテナの構築、起動、停止
Dockerfileの作成
作業ディレクトリの下にDockerfileという名のファイルを新規作成し、次の内容を書き込んでください。
FROM elixir:1.18.4
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
ENV DEBIAN_FRONTEND noninteractive
ENV DEBCONF_NOWARNINGS yes
RUN apt-get update && apt-get -y install apt-file && apt-file update
RUN apt-get -y upgrade
RUN apt-get -y install bash git vim sudo curl inotify-tools cmake erlang-dev \
ca-certificates gnupg postgresql-client libpq-dev
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
ENV NODE_MAJOR=22
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" > /etc/apt/sources.list.d/nodesource.list
RUN apt-get update && apt-get -y install nodejs
RUN apt-get -y install build-essential libcairo2-dev libpango1.0-dev \
libjpeg-dev libgif-dev librsvg2-dev
RUN npm install -g vega vega-lite canvas
RUN echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
ARG UID=1000
ARG GID=1000
RUN groupadd -g $GID devel
RUN useradd -u $UID -g devel -m devel
RUN echo "devel ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
COPY --chown=devel:devel . /app
USER devel
WORKDIR /app
RUN mix local.hex --force
RUN mix local.rebar --force
compose.ymlの作成
続いて、作業ディレクトリの下にcompose.ymlという名のファイルを新規作成し、次の内容を書き込んでください。
services:
app:
build: .
volumes:
- .:/app:cached
working_dir: /app
ports:
- "4000:4000"
depends_on:
- db
tty: true
db:
image: postgres:15.8
volumes:
- pg:/var/lib/postgresql/data:cached
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: phx_sample_dev
ports:
- "5432:5432"
volumes:
pg:
compose.ymlは、コンテナ群をどのように起動するかを記述したyaml形式の設定ファイルです。
compose.ymlでは、個々のコンテナにサービスという名前を与えます。上記のcompose.ymlでは、appという名前のサービスが定義されています。
コンテナの構築
次のコマンドを実行してください。
cd ~/projects/phx_sample
docker compose build
コンテナの起動
次のコマンドを実行してコンテナを起動してください。
docker compose up -d
起動中のコンテナのリスト確認
docker compose ps
Dockerコンテナの中に入る
次のコマンドを実行すると起動中のコンテナの中に入ることができます。
docker compose exec app bash
コンテナの停止
Dockerコンテナからexit
コマンドを実行してコンテナを抜けてください。
次のコマンドを実行して起動中のコンテナを停止してください。
docker compose stop