10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

闘魂Phoenix道場:MySQLをDockerで立ち上げるッ!!! Phoenixアプリから使わせていただく

Last updated at Posted at 2025-06-19

いよいよはじまりました!
Qiita Tech Festa :tada::tada::tada:

はじめに

こんにちは、ElixirとPhoenixをこよなく愛する闘魂プログラマーです。
つまりAIプログラマーです。あっ、AIとは、Antonio Inokiさん、つまり猪木さんのことです。

本記事は、【あなたの】はじめてのMySQL への参加記事です。

次の2つの「はじめて」で書きます。

  • MySQLをメインテーマにすえた記事をはじめて書く
  • Phoenixアプリが使用するデータベースとしてMySQLをはじめて使う

もしかしたら、以前も書いたことあるかも :interrobang: ですし、やったことあるかも :interrobang: です。あしからずご了承ください。覚えていないので、新鮮な気持ちで「はじめて」やります!

PhoenixのデフォルトDBはPostgreSQL

PhoenixのデフォルトDBはPostgreSQLです。そのことについては次の記事にしたためました。

闘魂Phoenix道場:PostgreSQLをDockerで立ち上げるッ!!!(devcontainer付き) Phoenixアプリから使わせていただく

この記事では、MySQLを使ってみたいと思います :qiitan:
私は学生や社会人にAWSを教える機会があります。その際に、Webアプリケーションの例としてWordPressを取り上げます。ですから、いつもMySQLにはお世話になっています。余談でした。

Phoenixアプリが使用するデータベースにMySQLを採用する

見出しが何だか、上から目線です。MySQL愛好家のみなさまごめんなさい :pray::pray::pray:

Phoenix のプロジェクトを作成する際に、使用するデータベースについて何も指定しないとPostgreSQLがデフォルトで選ばれます。

今回は、MySQLを選びます。自発的に、MySQLを選ぶわけです。

mix phx.new hello --database mysql

--database mysqlで、MySQLを指定するという格好です。
ドキュメントは、「mix phx.new - Options」です。

話の順番が前後しますが、Phoenixとは、Elixir製のすんごいWebアプリケーションフレームワークのことです。

DockerでMySQLを立ち上げる

新しいPCを新調するたびに、自分のローカルにMySQLを入れるのは面倒ですし、慎重派の私はDockerコンテナで立ち上げています。

docker run -d --rm -p 3306:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
  -e MYSQL_ROOT_PASSWORD= \
  mysql

バージョン

2025/06/20現在、バージョンを指定しないと、「9.3.0 MySQL Community Server - GPL」が立ち上がっていました。

環境変数

MYSQL_ALLOW_EMPTY_PASSWORDMYSQL_ROOT_PASSWORDには、config/dev.exsにデータベースへの接続情報が以下のようにデフォルトで作られるのでそれにあわせています。「mysql - Environment Variables」の記述をChatGPTの協力のもと読み込んで環境変数をセットしました。

config/dev.exs
config :hello, Hello.Repo,
  username: "root",
  password: "",
  hostname: "localhost",
  database: "hello_dev",
  stacktrace: true,
  show_sensitive_data_on_connection_error: true,
  pool_size: 10

CRUDを試す

mix phx.gen.live Accounts User users name:string age:integerとやって、指示通りに、lib/hello_web/router.exを編集し、mix ecto.migrate(マイグレーション)してから簡単なCRUD(Create/Read/Update/Delete)操作を試してみました。もちろん、動きます!

mix phx.gen.liveタスクについては、リンク先をご参照ください。簡単にざっくり言うと、データモデル、スキーマ、マイグレーションファイル、GUIをいい感じに作ってくれる足場をかためるコマンドです。

おわりに

Phoenixアプリが使用するデータベースにMySQLをはじめて使ってみました。
もしかしたら、以前も書いたことあるかも :interrobang: ですし、やったことあるかも :interrobang: です。あしからずご了承ください。覚えていないので、新鮮な気持ちで「はじめて」やりました!

【あなたの】はじめてのMySQLキャンペーンをきっかけに、Phoenixで組み合わせて使ってみようと思いました。

闘魂とは、己に打ち克つこと。そしてPhoenixアプリケーションの裏にMySQLあり。

元氣ですかーーーッ!!!

10
1
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
10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?