以下のファイルをPhoenixプロジェクトのルートディレクトリ配下に設置します。
- Dockerfile
- docker-compose.yml
各ファイルに定義されている以下のバージョンを適切なものに修正します。
- Dockerfile
- Elixirのバージョン
- Phoenixのバージョン
- Nodeのバージョン
- npmのバージョン
- docker-compose.yml
- MySQLのバージョン
config/dev.exs
に定義されているMySQLのusernameとdatabaseを以下のように修正します。 (databaseの名前は適切に書き変えてください)
# Configure your database
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.MySQL,
username: "root",
password: "password",
database: "my_app_dev",
hostname: "db",
pool_size: 10
以下のコマンドを実行してdockerコンテナの生成し、Phoenixアプリケーションを実行します。
(docker-composeでコンテナを立ち上げると同時に、 mix phx.server
が実行されます)
$ docker-compose up -d
以下のコマンドを実行してMySQLのDBを作成します。
$ docker-compose run web mix ecto.create && mix ecto.migrate
以下のURLにアクセスして、Phoenixアプリケーションを開くことができれば成功です http://localhost:4000
dockerコンテナでshellを操作するには、以下のコマンドを実行します。
$ docker exec -it {コンテナのID} bash
docker-composeで立ち上げたコンテナを停止するには、次のコマンドを実行します。
$ docker-compose stop
なお、 docker-compose down
でコンテナを削除すると、開発用DBのデータも削除されるので注意してください。(DBデータを維持するにはVolumeを指定する必要あり)
6/5 時点で、MySQLのドライバであるMariaexは、MYSQL8.0に接続できない問題がある模様。 xerions/mariaex#222