Closed5
fly.ioへmy.cnfを変更したMySQLコンテナをデプロイする
![shuntaka](https://res.cloudinary.com/zenn/image/fetch/s--R_0JGNjN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/0c7382cb18.jpeg)
続き、今はデフォルトイメージだけど設定値まわり変えてデプロイしたい
![shuntaka](https://res.cloudinary.com/zenn/image/fetch/s--R_0JGNjN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/0c7382cb18.jpeg)
現在の確認、当然だけどデフォルト設定
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)
![shuntaka](https://res.cloudinary.com/zenn/image/fetch/s--R_0JGNjN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/0c7382cb18.jpeg)
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"
]
![shuntaka](https://res.cloudinary.com/zenn/image/fetch/s--R_0JGNjN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/0c7382cb18.jpeg)
デプロイまでのコマンド
注: モノレポっぽくなっているので、コンテナで利用するファイルは.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)
![shuntaka](https://res.cloudinary.com/zenn/image/fetch/s--R_0JGNjN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/0c7382cb18.jpeg)
コンテナデプロイするSaasだし、デフォルトイメージが動けば変更しても動くよね
でも嬉しい!fly.io最高だな。
次はnestのappとdbのappを接続してみる。それは別のスクラップへ。
このスクラップは2023/02/26にクローズされました