Closed5

fly.ioへmy.cnfを変更したMySQLコンテナをデプロイする

shuntakashuntaka

現在の確認、当然だけどデフォルト設定

mysql> SELECT @@GLOBAL.transaction_isolation, @@transaction_isolation;
+--------------------------------+-------------------------+
| @@GLOBAL.transaction_isolation | @@transaction_isolation |
+--------------------------------+-------------------------+
| REPEATABLE-READ                | REPEATABLE-READ         |
+--------------------------------+-------------------------+
1 row in set (0.05 sec)

mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.01 sec)

shuntakashuntaka
mysql/conf.d/my.cnf
[mysqld]
default-authentication-plugin=mysql_native_password
character_set_server=utf8mb4
sql_mode=TRADITIONAL,ONLY_FULL_GROUP_BY
general_log=1
log_output=TABLE
slow_query_log=1
long_query_time=2
autocommit=0

[mysql]
default_character_set=utf8mb4
mysql/Dockerfile
FROM mysql:8

RUN mkdir /etc/mysql/mysql.conf.d
ADD ./mysql/conf.d/my.cnf /etc/mysql/conf.d/.

CMD ["mysqld"]
mysql/fly.toml
# fly.toml file generated for gssimdev-db on 2023-02-25T17:33:08+09:00

app = "アプリ名"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []

[mounts]
  source="データソース名"
  destination="/data"

[env]
  MYSQL_DATABASE = "some_db"
  MYSQL_USER = "non_root_user"

[build]
  image = "mysql:8"

[experimental]
  cmd = [
    "--default-authentication-plugin", "mysql_native_password",
    "--datadir", "/data/mysql",
    "--performance-schema=OFF",
    "--innodb-buffer-pool-size", "64M"
  ]
shuntakashuntaka

デプロイまでのコマンド

注: モノレポっぽくなっているので、コンテナで利用するファイルは.dockerignoreしないようにする

# 変数
export OWNER=OWNER名
export REGISTORY_NAME=ghcr.io/$OWNER # なんでも良い、レジストリに上げないので
export COMMITHASH=$(git rev-parse --short HEAD)

# ビルド
export IMAGE_NAME=mysql
docker build -t $IMAGE_NAME -f mysql/Dockerfile .

# タグ打ち
docker tag $IMAGE_NAME \
  $REGISTORY_NAME/$IMAGE_NAME:$COMMITHASH

# fly.ioへデプロイ
flyctl deploy \
  --config mysql/fly.toml \
  --local-only \
  --image $REGISTORY_NAME/$IMAGE_NAME:$COMMITHASH

プロキシして

flyctl proxy 13306:3306 -a <アプリ名>

変更確認OK

$ mysql -h localhost -P 13306 -u non_root_user some_db -ppassword --protocol tcp

(中略)
mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.02 sec)
shuntakashuntaka

コンテナデプロイするSaasだし、デフォルトイメージが動けば変更しても動くよね
でも嬉しい!fly.io最高だな。

次はnestのappとdbのappを接続してみる。それは別のスクラップへ。

このスクラップは2023/02/26にクローズされました