24 Ağustos 2022 Çarşamba

Docker ve MySQL

Giriş
Burada sadece "Docker" kullanarak MySQL veri tabanını çalıştırma örnekleri var. "Docker Compose" için Dockerfile ve MySQL yazısına bakabilirsiniz.

Docker ile MySQL'i çalıştırmak için belirtilen parametreler şöyle
MYSQL_ROOT_PASSWORD
MYSQL_DATABASE
Çalıştırılacak SQL dosyaları "docker-entrypoint-initdb.d" dizini altına kopyalanır.  Bu dosyalara
01-schema.sql
02-user.sql
03-data.sql 
gibi isimlere verilir

1. docker run Kullanımı
Örnek
Şöyle yaparız
docker pull mysql:5.6

docker run --name my-mysql 
  -p 3306:3306 
  -e MYSQL_ROOT_PASSWORD=mypassword 
  -d mysql:5.6
Örnek - SQL Çalıştırmak
Şöyle yaparız. 
- "docker stop mysql" yapınca container otomatik silinir. 
- Çalıştırılacak SQL dosyaları  "docker-entrypoint-initdb.d" dizini altına kopyalanır. 
- ${PWD} hem Linux hem de PowerShell ile çalışır. 
- Ayrıca mysql sunucusuna --sql-mode="ANSI_QUOTES" ile de parametre geçeriz
docker run -d -it  -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=db \
  --name mysql \
  --rm \
  -p 3306:3306 \
  -v ${PWD}/schema.sql:/docker-entrypoint-initdb.d/schema.sql \
  mysql:8.0 --sql-mode="ANSI_QUOTES"
Örnek
Şöyle yaparız
docker run -it -e MYSQL_ROOT_PASSWORD=secretpswd \
  -e MYSQL_DATABASE=blog \
  --name blog-mysql \
  -p 3307:3306 \
  mysql:8.0
Örnek - /etc/mysql/conf.d Dosyasını Belirtmek
Elimizde şöyle bir mysql config dosyası olsun
$ cat mysql-conf/jiramysql/conf.d/my-custom.conf 
[mysqld]
default-storage-engine=INNODB
character_set_server=utf8mb4
innodb_default_row_format=DYNAMIC
innodb_log_file_size=2G
sql_mode=NO_AUTO_VALUE_ON_ZERO
Çalıştırmak için şöyle yaparız
$ docker pull mysql
$ sudo docker run --detach --name=jiramysql --env="MYSQL_ROOT_PASSWORD=password" 
  --publish 6603:3306 
  --volume=/Users/cpandey/Development/Docker/mysql-data:/var/lib/mysql 
  --volume=/Users/cpandey/Development/Docker/mysql-conf/jiramysql/conf.d:/etc/mysql/conf.d mysql
Bash açmak için şöyle yaparız
$ sudo docker exec -it jiramysql bash
bash-4.4# mysql -uroot -ppassword

mysql> ...
Mount edilen volume'lara bakmak için şöyle yaparız
$ sudo docker inspect jiramysql|grep -A 16 -i mounts
             "Mounts": [
            {
                "Type": "bind",
                "Source": "/Users/cpandey/Development/Docker/mysql-data",
                "Destination": "/var/lib/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/Users/cpandey/Development/Docker/mysql-conf/jiramysql/conf.d",
                "Destination": "/etc/mysql/conf.d",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
2. Dockerfile Dosyası Kullanımı
Örnek - SQL Çalıştırmak
Şöyle yaparız
ADD db_backup.sql docker-entrypoint-initdb.d/db_backup.sql
Örnek - SQL Çalıştırmak
Çalıştırılacak SQL "docker-entrypoint-initdb.d" dizini altına kopyalanır. Şöyle yaparız
FROM mysql:5.7.25
LABEL "Project"="vproject"
LABEL "Author"="Onumaku chibuike"

ENV MYSQL_ROOT_PASSWORD="vprodbpass"
ENV MYSQL_DATABASE="accounts"


ADD db_backup.sql docker-entrypoint-initdb.d/db_backup.sql

Hiç yorum yok:

Yorum Gönder

Soft Delete

Giriş Açıklaması  şöyle When using the soft delete mechanism on the database, you might run into a situation where a record with a unique co...