文章目录

序言

1)本文分三个部份:

2)其他相关文档

1.测试/开发使用

优点:

1.1环境打算

已安装docker和docker-compose

1.2docker-compose文件

创建mysql目录linux论坛,目录下新建docker-compose.yml文件,内容如下:

version: '3'
services:
  db:
    image: 'docker.io/mysql:latest' #使用的镜像
    restart: always
    container_name: mysql  #容器名
    volumes:
      - ./data:/var/lib/mysql  #挂载目录,持久化存储
    ports:
      - '3306:3306'
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: "liubei@2021"   #设置root用户的密码

1.3启动mysql

docker compose up d_docker compose up d_docker compose up d

在刚刚创建的mysql目录下执行命令

# docker-compose up -d 

启动以后docker compose up d,数据库就可以正常使用了。

1.4其他操作

# docker-compose ps
  Name                Command             State                 Ports
------------------------------------------------------------------------------------
mysql   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp, 33060/tcp

# docker-compose stop
Stopping mysql ... done
# docker-compose ps
  Name                Command             State    Ports
--------------------------------------------------------
mysql   docker-entrypoint.sh mysqld   Exit 0

# docker-compose restart

# docker-compose down
Stopping mysql ... done
Removing mysql ... done
Removing network mysql_default
# docker-compose ps
Name   Command   State   Ports
------------------------------

说明:可以看见,stop的时侯,容器是Exit状态。而down以后容器被彻底删掉了,而且不用害怕,我们早已对数据做了持久话储存,up然后数据还在。

2生产级使用

说明:

此处只讨论mysql的创建,不介绍高可用或主从构架。

假如要做主从的话只须要放一个脚本或sql在2.4中的init目录下。

思路阐述:

创建mysql目录,下面创建如下文件和目录

2.1docker-compose文件

version: '3'
services:
  db:
    image: 'docker.io/mysql:latest'
    restart: always
    container_name: mysql
    volumes:
      - ./data:/var/lib/mysql
      - ./my.cnf:/etc/mysql/my.cnf
      - ./init:/docker-entrypoint-initdb.d/
    ports:
      - '3306:3306'  #“宿主机端口号:容器内端口号”
    environment:
      MYSQL_ROOT_PASSWORD: "liubei@2021"
      MYSQL_USER: 'liubei'  # 创建普通用户
      MYSQL_PASSWORD: 'liubei@2021'     #普通用户密码
      MYSQL_DATABASE:  'liubeidb'  #创建一个库

2.2f

说明:msyql的配置文件,下面只是一个示例,你可以按照须要修改

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/

2.3data目录

可以不提早创建,容器启动的时侯会手动创建并挂载。

2.4init目录和初始化脚本

将启动脚本写放在init目录,给执行权限即可,可以是shelllinux 软件,可以是sql。假如你不须要就不放任何文件。数据库没有初始化时侯会执行该脚本。

2.5容器启动和操作

同上文1.3和1.4docker compose up d,不赘言。

3手动创建脚本

docker compose up d_docker compose up d_docker compose up d

# wget  ftp://10.252.xxx.xxx/script/x'x'x'x.sh -O xxx.sh && bash xxx.sh

即可直接启动一个开发/测试级的msyql数据库

#!/bin/bash
########## 定义变量 ##########
read -p "输入安装的位置(回车默认/usr/local/mysql ) " home_dir
if [ -z "${home_dir}" ];then
        home_dir=/usr/local/mysql
fi
read -p "输入密码(回车默认liubei@2021):" mysql_passwd
if [ -z "${mysql_passwd}" ];then
        mysql_passwd="liubei@2021"
fi
read -p "输入端口(默认3306):" mysql_port
if [ -z "${mysql_port}" ];then
        mysql_port=3306
fi
read -p "新建库(默认liubeidb):" mysql_db
if [ -z "${mysql_db}" ];then
        mysql_db=liubeidb
fi
############## yml文件 ##################
mkdir ${home_dir} -p
cat > ${home_dir}/docker-compose.yml << EOF
version: "3.1"
services:
  mysql:
    image: docker.io/mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: ${mysql_passwd}
      MYSQL_DATABASE: ${mysql_db}
      TZ: Asia/Shanghai
    restart: always
    ports:
      - ${mysql_port}:3306
    volumes:
      - ./data:/var/lib/mysql
EOF
cd ${home_dir}
docker-compose up -d
docker ps

在这里插入图片描述

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复