環境とか
- 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ページ
感想
- 全体的にRailsっぽさがあるので仲良くなれそう
- と思ったらちょいちょい差異がある