常用的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

results matching ""

    No results matching ""