💽
docker-compose で MySQLを稼働させる
みなさんこんにちは
本日のお題
Jitis(prosody)のユーザー格納先として、MySQLを利用したい。
AWS RDPを利用すればいいが、大したデータ量もトランザクションも発生することは考えにくい。
コストを考えて、Jitsiと同じサーバー上にMySQLをDockerで構築したい。(RDSのコストは月4000円程度かかる。マルチAZなら金額は倍になる。私の予算では支払うことができない。)
運用を考えて、docker-compose で運用したい。
Dockerイメージの導入
おそらくこれがオフィシャルのDockerイメージ
[root@meet ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete
...
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
[root@meet ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 3218b38490ce 8 days ago 516MB
...
[root@meet ~]#
docker-compose 記号前の準備
docker-compose.ymlファイルを準備する。
ディレクトリの作成
[root@meet meet]# pwd
/opt/jitsi/meet
[root@meet meet]# ls
docker-jitsi-meet
[root@meet meet]# mkdir mysql
docker-compose.ymlファイルの作成
[root@meet meet]# cd mysql
※my.cnf等の格納先DIR
[root@meet mysql]# mkdir db
[root@meet mysql]# mkdir db/data
[root@meet mysql]# mkdir db/conf.d
[root@meet mysql]# mkdir db/sql
[root@meet mysql]# mkdir db/log
[root@meet mysql]# vi docker-compose.yml
version: '3'
services:
# MySQL
db:
container_name: mysql
image: mysql:latest
command: mysqld --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: prosody
MYSQL_USER: prosody_user
MYSQL_PASSWORD: prosody_password
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
expose:
- '3306'
volumes:
- '/opt/jitsi/meet/mysql/db/data:/var/lib/mysql'
- '/opt/jitsi/meet/mysql/db/conf.d:/etc/mysql/conf.d'
- '/opt/jitsi/meet/mysql/db/sql:/docker-entrypoint-initdb.d'
networks:
meet.jitsi:
networks:
meet.jitsi:
docker-compose起動
[root@meet mysql]# docker-compose up -d
[+] Running 2/2
⠿ Network mysql_meet.jitsi Created 0.0s
⠿ Container mysql Started 0.6s
[root@meet mysql]#
MySQLのコンテナに入って、DBを作成する
[root@meet mysql]# docker-compose exec db /bin/bash
root@0ded1560f41a:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.27 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> CREATE DATABASE prosody;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE USER 'prosody'@'%' IDENTIFIED BY 'prosody_password';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON prosody . * TO 'prosody'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| prosody |
| sys |
+--------------------+
5 rows in set (0.01 sec)
今後の課題
JitsiとMySQLをどうやって連結するか。
今回の所要時間
ここまでは、2時間くらい。
しかし、LOGファイルをvolumesで連結したくて、数時間粘って連結できず。。。
これ今後の課題ですね。
Discussion