💽

docker-compose で MySQLを稼働させる

2021/12/30に公開

みなさんこんにちは

本日のお題

Jitis(prosody)のユーザー格納先として、MySQLを利用したい。
AWS RDPを利用すればいいが、大したデータ量もトランザクションも発生することは考えにくい。
コストを考えて、Jitsiと同じサーバー上にMySQLをDockerで構築したい。(RDSのコストは月4000円程度かかる。マルチAZなら金額は倍になる。私の予算では支払うことができない。)
運用を考えて、docker-compose で運用したい。

Dockerイメージの導入

おそらくこれがオフィシャルのDockerイメージ
https://hub.docker.com/_/mysql

[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