0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Fly.ioにMySQLをデプロイする手順

Posted at

1. はじめに

この記事では、Fly.ioを使ってMySQLをデプロイする手順を解説します。
Fly.ioではDockerfileの作成が不要で、公式イメージをそのまま利用できるため、最短ステップでMySQLをデプロイできます。

この記事のゴール

  1. Fly.ioにMySQLをデプロイする。
  2. ローカルからFly.io上のMySQLに接続できるようにする。

想定読者

MySQL8.4をfly.ioにデプロイしたい方

2. 前提条件

2.1. Fly.io CLIのインストール

brew install flyctl

2.2. Fly.ioアカウントの作成とログイン

flyctl auth login

3. MySQLのデプロイ手順

3.1. アプリケーションの作成

mkdir my-mysql # ルート直下にしました
cd my-mysql
fly launch --no-deploy --image mysql:8.4

設定変更 (ポート3306への変更)

コマンド実行後、以下のプロンプトが表示されます:

Do you want to tweak these settings before proceeding? (y/N)

ここでは、y を選択してください。

その後、ブラウザでFly.ioの管理画面が自動的に開きます。

  • Port設定を3306に変更
    1. 「Port」フィールドを 3306 に変更します。
    2. 設定を保存し、管理画面を閉じます。

3.2. ボリュームの作成

Fly.ioでは、データを永続化するためにボリュームを作成します。

fly volumes create mysqldata --size 10
  • mysqldata: ボリューム名
  • サイズ10GBを指定(必要に応じて変更可能)

実行時のプロンプト例:

Warning! Every volume is pinned to a specific physical host. You should create two or more volumes per application to avoid downtime. Learn more at https://fly.io/docs/volumes/overview/
? Do you still want to use the volumes feature? Yes
? Select region:  [Use arrows to move, type to filter]
? Select region: Tokyo, Japan (nrt)

ここでは、以下の手順で進めます:

  1. 「Do you still want to use the volumes feature?」と聞かれるので、Yesを選択。
  2. 次にリージョンを選択する画面が表示されるので、矢印キーでTokyo, Japan (nrt) を選択。

3.3. 環境変数とシークレットの設定

MySQLのユーザー名やパスワードはFly.ioのシークレットとして安全に保存します。

fly secrets set MYSQL_PASSWORD="あなたのパスワード" MYSQL_ROOT_PASSWORD="あなたのルートパスワード"

3.4. 設定ファイルの編集 (fly.toml)

以下は例です:

app = 'my-mysql'
primary_region = 'nrt'

[build]
  image = 'mysql:8.4'

[[vm]]
  cpu_kind = 'shared'
  cpus = 1
  memory_mb = 2048

[processes]
  app = """--datadir /data/mysql \
    --mysql-native-password=ON"""

[mounts]
  source = "mysqldata"
  destination = "/data"

[env]
  MYSQL_DATABASE = "my_database"
  MYSQL_USER = "my_user"

3.5. 環境変数とデータベースの初期化について

このfly.tomlenvセクションに記載された項目は、デプロイ時に自動でデータベース内に作成されます。

具体例:

  • MYSQL_DATABASE: Fly.ioがデプロイ時にmy_databaseというデータベースを自動で作成します。
  • MYSQL_USER: Fly.ioがmy_userというユーザーを作成します。

これらは、Fly.ioが提供するMySQL公式イメージの初期化機能によって設定されます。
また、以下のシークレットとして指定されたパスワードがユーザーに割り当てられます。

fly secrets set MYSQL_PASSWORD="あなたのパスワード" MYSQL_ROOT_PASSWORD="あなたのルートパスワード"

ポイント:

  • データベースやユーザーはFly.ioの公式MySQLイメージに組み込まれている機能で自動的に作成されます。
  • 環境変数の設定だけで基本的なデータベース環境が構築されるため、手動でSQLを実行する必要はありません。

4. デプロイの実行

準備が整ったら、以下のコマンドでデプロイを実行します。

fly deploy

5. 接続確認

5.1. プロキシ設定

Fly.ioのMySQLにローカルから接続するためのプロキシを起動します。

fly proxy 3306 -a my-mysql

5.2. ローカルから接続

プロキシ経由で接続します:

mysql -h 127.0.0.1 -P 3306 -u my_user -p my_database
  • パスワード入力後、接続されれば成功です

6. データベース管理

6.1. テーブル作成

CREATE TABLE test_table (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL
);

6.2. データ確認

INSERT INTO test_table (name) VALUES ('test_name');
SELECT * FROM test_table;

7. トラブルシューティング

7.1. 接続できない場合

Fly.ioのログを確認します:

fly logs

8. まとめ

  • Fly.ioではDockerfile不要でMySQLを簡単にデプロイできる。
  • 永続化設定や接続情報の管理もFly.ioのシークレット管理で安全に実施可能。
  • 本番環境やアプリケーションとの接続設定も同じ手順で対応できる。

9. 補足情報

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?