常用的Docker - MySQL
在開發時期,資料庫是工程師做好的夥伴,而有Docker的協助,可以幫上許多忙...
下面是一段在本機啟動MySQL並聽3306 port的指令,裡面再啟動時候,順便把預設的password也設定上去:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql
在docker mysql的image中,預設將my.cnf的設定檔案放在"/etc/mysql/my.cnf"中,如果希望多知道一些裡面的資訊,可以透過docker exec來取出這個檔案瞧瞧:
docker exec mysql cat /etc/mysql/my.cnf
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Community Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
skip-host-cache
skip-name-resolve
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
#log-error = /var/log/mysql/error.log
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
依照上面的設定檔,我們可以知道,如果有DB data file存取的需求,我們也可以透過mount外部資料夾位置到這個地方,讓資料檔案可以detach在docker之外:
docker run --name mysql \
-p 3306:3306 \
-v /data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
-d mysql
甚至也可以直接置換my.cnf成為您需要的檔案喔:
docker run --name mysql \
-p 3306:3306 \
-v /data/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=password \
-d mysql
進一步,可能可以直接將整個config資料夾分離,讓未來資料庫transfer更快速...
docker run --name mysql \
-p 3306:3306 \
-v /mnt/mysql-data:/var/lib/mysql \
-v /mnt/mysql-config:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=password \
-d mysql:5.5