Docker MariaDB Container ใช้งาน my.cnf
ในตอนที่แล้วผมนำเสนอการสร้าง container ของ MariaDB โดยที่ สตาร์ทขึ้นมาโดยไม่มี my.cnf ก็เหมือนกับ ซื้อรถมาแล้วไม่ได้แต่ง ซึ่งทำให้ไม่สามารถใช้งาน MariaDB ได้เต็มประสิทธิภาพ หรือใช้งานได้แต่ไม่สมบูรณ์แบบ สำหรับตอนนี้มาดูกันครับถ้าเรามี my.cnf อยู่แล้ว เราจะให้ MariaDB container นำ my.cnf นั้นไปใช้งานได้อย่างไร มาดูกันครับ
ตัวอย่างคำสั่ง
docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag
ผมได้เอา my.cnf เอาไว้ที่ /data/conf.d
[root@docker-test conf.d]# pwd /data/my.cnf.d [root@docker-test conf.d]# ls my.cnf
[root@docker-test ~]# docker run --name mariadb10.1_custom -v /data/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 09e241a351f83f1b0356d4aae5e8880b2e11ef5879955b50cc6d7092f289cc17 [root@docker-test ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09e241a351f8 mariadb:10.1 "docker-entrypoint.sh" 15 seconds ago Up 11 seconds 3306/tcp mariadb10.1_custom
[root@docker-test my.cnf.d]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ffcb3a408c7 mariadb:10.1 "docker-entrypoint.sh" 48 seconds ago Up 44 seconds 3306/tcp maridb10.1_cnfcustom
เข้าใช้งาน container ผ่าย bash shell
[root@docker-test data]# docker exec -it mariadb10.1_custom bash root@ea9bce5b82d1:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql-docker1>
ก็จะสามารถทำให้ MariaDB container ใช้งาน my.cnf ได้ แล้วรู้ได้ยังไงว่า mariadb container นี้ใช้งาน my.cnf นั้นแล้ว
ผมรู้ได้เพราะผมเขียนคำสั่งให้แสดง prompt ของ mariadb เอาไว้ใน my.cnf
[mysql] prompt=mysql-docker1> \ ## MySQL Prompt
เป็นอันว่าผ่านไปได้อีก 1 ด่าน สามารถทำให้ mariadb container อ่าน my.cnf ได้ แต่มีข้อแม้ว่า ต้องเป็น my.cnf ที่ใช้กับ Linux Debian นะครับ เพราะ image ของ mariadb ตัวนี้ทำมาจาก Debian
อ้างอิง
- https://hub.docker.com/_/mariadb/
- https://mariadb.com/kb/en/mariadb/installing-and-using-mariadb-via-docker/