【Docker】Elixir Phoenix の環境を作る
Docker で Elixir Phoenix の環境を作る
作成する環境
- Elixir 1.14.2
- Phoenix 1.6.3
Docker Compose ファイル作成
docker-compose.yml
を用意します。
作るのは Elixir Phoenix の環境です。
Postgresも入っています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| 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 を見て指定してください。
1
2
3
4
5
6
7
| 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 環境を構築する
docker-compose up -d
docker-compose run elixir-phoenix bash
mix phx.new . --app my_app
1
2
3
4
5
6
7
8
| # 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
|
1
| 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
のコメントアウトを外すと起動時に自動的にサーバーが起動する設定にできます。
1
| command: mix phx.server
|
参考