前言搭建基礎服務docker-compose.yml 解析Dockerfile 解析啓動Mysql服務結語mysql
docker,docker-composer 的安裝就很少說明了,請自行安裝。
這一系列文章,經過搭建Mysql 服務集羣,讓你們學會如下知識點:web
新建文件夾mysql_composersql
mkdir mysql_composer
cd mysql_composer
複製代碼
新建docker-composer.ymldocker
version: '3'
networks: #定義網路
backend:
driver: ${NETWORKS_DRIVER}
services:
### MySQL ################################################
mysql0:
build:
context: ./mysql #自定義鏡像
args:
- MYSQL_VERSION=${MYSQL_VERSION} #指定版本
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE} #默認建立數據庫
- MYSQL_USER=${MYSQL_USER} #建立用戶
- MYSQL_PASSWORD=${MYSQL_PASSWORD} #用戶密碼
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} #root 用戶祕密
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_PATH_HOST}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
複製代碼
新建.envshell
# All Networks driver
NETWORKS_DRIVER=bridge
WORKSPACE_TIMEZONE=UTC
DATA_PATH_HOST=~/.my_env/data
### MYSQL #################################################
MYSQL_VERSION=5.7
MYSQL_DATABASE=test
MYSQL_USER=test
MYSQL_PASSWORD=test123456
MYSQL_PORT=3308
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
複製代碼
在當前路徑下新建文件夾mysql數據庫
mkdir mysql
複製代碼
新建Dockfile文件bash
ARG MYSQL_VERSION=latest
FROM mysql:${MYSQL_VERSION}
#####################################
# Set Timezone
#####################################
ARG TZ=UTC
ENV TZ ${TZ}
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && chown -R mysql:root /var/lib/mysql/
COPY my.cnf /etc/mysql/conf.d/my.cnf
CMD ["mysqld"]
EXPOSE 3306
複製代碼
新建Mysql的配置文件my.cnf網絡
# The MySQL Client configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysql]
[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8
複製代碼
新建docker-entrypoint-initdb.d目錄composer
mkdir docker-entrypoint-initdb.d
複製代碼
新建文件createdb.sql
FLUSH PRIVILEGES ;
複製代碼
最終的目錄結構應該是:
${NETWORKS_DRIVER},${MYSQL_VERSION},${MYSQL_DATABASE}
等變量。這些變量可以在咱們定義服務時,提供方便的管理。而變量對應的值咱們放在.env
文件中。默認狀況下,docker-compose.yml 會自動讀取相同目錄下的.env 文件。bridge
模式。mysql0
的服務。爲了啓動服務,咱們固然還要配置些參數。dockerfile 使用來自定義鏡像的,可讓咱們方便的構建本身的docker 鏡像
這個例子中的作的事情其實很簡單
設置服務的時區,而且把自定義的配置文件,放入到mysql 的配置文件目錄下。
docker-compose up -d
複製代碼
你可使用帳戶test,密碼test123456連接mysql服務,也可使用帳戶root,密碼root鏈接mysql服務。因爲我本地已經有個Mysql 服務佔用了3306端口,全部配置文件中,我給改爲了3308。
經過本篇文章,相信你們都會快速搭建一個Mysql 服務了。固然咱們的目標是打一個集羣出來。下一篇咱們講解怎麼搭建另外一臺Mysql 服務,並使兩臺服務連通。