LoginSignup
16
17

More than 5 years have passed since last update.

Phoenix製のOSS版のTrelloをdocker-composeで作ってみたよ

Posted at

さくっと試してみたい人は、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. 動かした時の画面キャプチャ

スクリーンショット 2016-03-14 10.27.33.png

スクリーンショット 2016-03-14 10.42.11.png

スクリーンショット 2016-03-14 10.42.59.png

日本語の入力はできないみたいですね^^;
ログで、〜invliad charactert〜みたいな出力が出ちゃいます。

3. phoenix-trelloの技術要素

READMEを読むと以下のとおりでした。

  • Elixir
  • Phoenix
  • nodejs
  • postgresql

また、起動するにあたっては、migrationが事前に必要だよ、とありますので、RoR感覚でいけるかな、と試してみることにしました。

4. docker-compose.ymlの作成フロー

  1. phoenix-trelloのアプリケーションのイメージを作成
  2. postgresqlのイメージを流用
  3. 上記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は以下のようになりました。

docker-compose.yml
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アプリケーションのキャッチアップをしてみようと思います。
  • 日本語入力はまだ出来なさそうです。設定なのか、ソース回収が必要なのかも見てみようと思います。
  • 紫色じゃない画面がいいなぁ。。。

本日はここまでとなります。

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17