Posted at

DockerでPhoenix Framework

More than 1 year has passed since last update.


環境とか


  • macOS

  • Docker For Mac Version 18.03.1


Dockerfileとdocker-composeをcloneしてbuild

git clone git@github.com:foxtrackjp/elixir_test.git

cd elixir_test
docker-compose build


Dockerfileはこんな感じ


Dockerfile

FROM elixir:alpine

RUN mkdir /app
WORKDIR /app

RUN yes | mix local.hex
RUN yes | mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
RUN mix local.rebar --force
RUN apk update && \
apk upgrade && \
apk add --update\
bash \
curl-dev \
git \
nodejs \
nodejs-npm \
&& rm -rf /var/cache/apk/*


alpineベースなイメージがあったのでこちらを利用しました。(ビルド後のイメージは150M弱くらい)


docker-composeはこんな感じ


docker-compose.yml

version: '3'

services:
db:
image: mysql:5.7.22
volumes:
- mysql:/var/lib/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: gJwWACGZqaukCjL7

app:
build: .
tty: true
volumes:
- .:/app
ports:
- "80:80"
- "4000:4000"
command: mix phx.server
depends_on:
- db

volumes:
mysql:
driver: local



アプリケーションの作成

docker-compose run app mix phx.new . --app sample --database mysql

Railsで言うとrails new sample --database=mysql


DBの接続情報を設定

生成されたアプリケーションのconfig/dev.exsにDBの接続情報を設定します。


dev.exs

config :sample, Sample.Repo,

adapter: Ecto.Adapters.MySQL,
username: "root",
password: "gJwWACGZqaukCjL7", #ここ
database: "sample_dev",
hostname: "db",#ここ
pool_size: 10


DBの作成

docker-compose run app mix ecto.create

Railsで言うとRails db:create


起動

docker-compose up

起動するとサーバーが立ち上がり、http://localhost:4000 にアクセスしてWelcomeページが表示されれば成功です


Welcomeページ

スクリーンショット 2018-05-24 14.56.47.png


感想


  • 全体的にRailsっぽさがあるので仲良くなれそう

  • と思ったらちょいちょい差異がある