さくっと試してみたい人は、2-1をご覧ください。
1. やりたいこと
ElixirかつPhoenixのアプリケーションを探してソースコードリーディングをしてみたかったです。
GitHubを徘徊していたら下記を見つけました!
Trelloをphoenixで作成しているみたいですね^^
GitLabやMattermost等と違って、堂々と[Trello]と記載してしまっているようです。
2. ともあれまずは動くのか見てみたかったのでDocker化してみた
2-1. 起動スクリプト置き場
以下に今回作成したdocker-compose.yml
を配置しました。
起動方法は以下のとおりです。
環境変数を設定します
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=postgres
フォアグラウンドで動かしたければ
docker-compose up
バックグラウンドで動かしたければ
docker-compose up -d
で
の画面で利用が可能になります。
2-2. 動かした時の画面キャプチャ
日本語の入力はできないみたいですね^^;
ログで、〜invliad charactert〜みたいな出力が出ちゃいます。
3. phoenix-trelloの技術要素
READMEを読むと以下のとおりでした。
- Elixir
- Phoenix
- nodejs
- postgresql
また、起動するにあたっては、migrationが事前に必要だよ、とありますので、RoR感覚でいけるかな、と試してみることにしました。
4. docker-compose.ymlの作成フロー
- phoenix-trelloのアプリケーションのイメージを作成
- postgresqlのイメージを流用
- 上記2つをdocker-compose.ymlでリンキングさせるように設定
4-1. phoenix-trelloのアプリケーションのイメージを作成
Dockerfileは以下のとおりです。
FROM tylerwaitt/phoenix
RUN git clone https://github.com/bigardone/phoenix-trello.git && \
cd phoenix-trello && \
yes | mix deps.get && \
npm install webpack && \
npm install
RUN apt-get update && \
apt-get install -y erlang-dev build-essential
RUN wget https://raw.github.com/wiki/rebar/rebar/rebar && \
mkdir -p /root/.mix && \
cp rebar /root/.mix/rebar && \
chmod u+x /root/.mix/rebar
ADD docker.exs phoenix-trello/config/
ADD docker-run.sh phoenix-trello/bin/
RUN chmod u+x phoenix-trello/bin/docker-run.sh
CMD ["phoenix-trello/bin/docker-run.sh"]
rebarとかは、Phoenixのルートディレクトリでmixコマンド叩くときに、入ってないと怒られちゃうので入れました。
また、地味にcompileも走るので、build-essentialが必要になりました。
4-2. postgresqlのイメージを流用
library/postgresを利用しました。
ユーザ名とパスワードは環境変数で設定できるようなので、docker-compose.ymlで設定しました。
4-3. 上記2つをdocker-compose.ymlでリンキングさせるように設定
docker-composeは以下のようになりました。
pg:
image: library/postgres:latest
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DATABASE=phoenix_trello_dev
phoenix-trello:
image: letusfly85/phoenix-trello:latest
links:
- "pg:postgresql"
ports:
- "8000:80"
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DATABASE=phoenix_trello_dev
5. 所感
- ソースを読んでガチャガチャ動かしみて、phoenixアプリケーションのキャッチアップをしてみようと思います。
- 日本語入力はまだ出来なさそうです。設定なのか、ソース回収が必要なのかも見てみようと思います。
- 紫色じゃない画面がいいなぁ。。。
本日はここまでとなります。