【Docker】Elixir Phoenix の環境を作る
【Docker】Elixir Phoenix の環境を作る
Docker で Elixir Phoenix の環境を作る
作成する環境
- Elixir 1.14.2
- Phoenix 1.6.3
Docker Compose ファイル作成
docker-compose.yml を用意します。
作るのは Elixir Phoenix の環境です。
Postgresも入っています。
version: '3.2'
services:
elixir-phoenix:
build:
context: .
dockerfile: ./Dockerfile
ports:
- '4000:4000'
# command: mix phx.server
tty: true
environment:
- MIX_ENV=dev
- PORT=4000
volumes:
- ../:/app
working_dir: /app/src
db:
image: postgres
volumes:
- .data/postgres:/var/lib/postgresql/data/pgdata
environment:
- PGDATA=/var/lib/postgresql/data/pgdata
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_HOST=db
DockerFileの用意
今回構築するElixirのバージョンは 1.14.2 ですが他のバージョンを使用する場合は elixir - Official Image - Docker Hub を見て指定してください。
FROM elixir:1.14.2
RUN mix local.hex --force && \
mix archive.install hex phx_new 1.6.3 --force && \
mix local.rebar --force
WORKDIR /app/src
Phoenix 環境を構築する
- Elixir Dockerコンテナに入る
docker-compose up -d
docker-compose run elixir-phoenix bash
- Phoenixプロジェクトを作成
mix phx.new . --app my_app
- DB設定変更
# Configure your database
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "my_app_dev",
hostname: "db",
pool_size: 10
- ホストから繋ぐためにIP設定を変更
http: [ip: {0, 0, 0, 0}, port: 4000],
- 依存関係コンパイル & DB作成 & マイグレーション実行
mix deps.compile && mix ecto.create && mix ecto.migrate
- サーバー起動
mix phx.server
http://localhost:4000 に接続してWelcomeページが出たら成功です。

- プロジェクト作成後に
docker-compose.ymlのコメントアウトを外すと起動時に自動的にサーバーが起動する設定にできます。
command: mix phx.server