JavaScriptを有効にしてください

【Docker】Elixir Phoenix の環境を作る

 ·  ☕ 1 分で読めます

【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 環境を構築する

  • Elixir Dockerコンテナに入る
docker-compose up -d
docker-compose run elixir-phoenix bash
  • Phoenixプロジェクトを作成
mix phx.new . --app my_app
  • DB設定変更
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
  • ホストから繋ぐためにIP設定を変更
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ページが出たら成功です。
phoenix

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

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer