02. 开发前准备,Docker安装MySQL,Redis

这个专栏意在实战,所以更偏向于动手,不会讲太多原理性的问题,如有疑问,可私信或评论区讨论。

接下来的操作都是基于 Linux上完成的(线上环境基本都是基于Linux),我这里用的是 CentOS7,你可以选择云服务,也可以自己搭建虚拟机,虚拟机搭建具体步骤,可以参考这篇 https://blog.csdn.net/qq_34709175/article/details/141427085,这里我只列出关键步骤。

如果你已经有现成的环境了,请直接从第3步开始,不用浪费时间看前面的了🤭。

1. 安装虚拟机软件 VirtualBox

参考这篇文档,完成安装即可 https://blog.csdn.net/qq_34709175/article/details/141427085

安装完成后打开,可看到如下界面

2. 使用 Vagrant 快速搭建Linux环境

Vargrant 打的口号就是 "Development Environments Made Easy"开发环境变得更简单。

2.1 安装 Vagrant ,拉取镜像

官网下载: https://developer.hashicorp.com/vagrant

下载好根据指引安装好即可

镜像仓库https://app.vagrantup.com/boxes/search

接下来我们去镜像仓库,找到自己需要的镜像,就可以快速完成环境搭建了。

点击进入详情页面,复制命令,去 CMD 窗口执行即可,这里要注意执行的路径,默认会把 Vagrantfile 下载到你执行命令的路径下,所以要注意一下

初始化

bash 复制代码
vagrant init centos/7

初始化完成后,会下载一个 Vagrantfile 文件。其实这个就是 New 前面的 Vagrantfile,我们也可以自己新建一个同名文件,把内容复制粘贴进去就行。

看到如下界面表示初始化完成

拉起

bash 复制代码
vagrant up

下载可能比较耗时,耐心等待
完成后,打开 **VirtualBox **发现虚拟机已经关联上了


在开始搭建环境前还有些准备工作要做

2.2 配置网络

这里我使用仅主机模式,比较简单,不同模式的区别,后面有时间再整理一下

选择仅主机模式后,点击确定即可。
这个时候去查看一下当前电脑网络配置

我们找一下以太网适配器,还记得刚刚让扫一眼的那个吗? 那个就是我们要找的适配器,我之前安装过WMware,所以发现这里有两个,一个没有名字的,一个 VMware Network Adapter VMnet1,我们要选择由** VirtualBox** 生成的**,**那除了这个 WMware 的剩下的那个应该就是的了,我这里就是192.168.56.1。
如果你想要验证一下 ,可以打开网络设置,一眼就看到了 VirtualBox Host-Only Ethernet Adapter


然后修改我们的 Vagrantfile ,这样在虚拟机拉起的时候会自动配置好虚拟机的 IP地址。

注意网段,这里只能是 192.168.56.1 - 192.168.56.255

验证一下是否设置成功

vagrant up 或者 vagrant reload 重启一下虚拟机
连接上虚拟机,vagrant ssh

之前忘记说了这里要留意一下,ssh的账号和密码

和本地互相 ping 一下,发现可以正常 ping

再用虚拟机 ping 一下外网,百度,测试也正常

到这里,网络配置就完成了,我们的虚拟机就可以正常使用了。

2.3 使用 xshell 连接

默认用户名为 vagrant

这里需要 publicKey 他就在我们拉起时 Vagrantfile 所在的目录下

我的在这里 D:\virtualBox\vagrant.vagrant\machines\default\virtualbox

这样我们就完成连接

2.4 修改虚拟机yum源,方便后续下载包

先备份

bash 复制代码
 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载国内yum源配置文件到/etc/yum.repos.d/CentOS-Base.repo

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

下载不下来直接去修改 CentOS-Base.repo 内容全覆盖成下面这个

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

清理 yum 缓存并更新

bash 复制代码
sudo yum clean all
sudo yum makecache
sudo yum update

下载可能比较耗时,耐心等待吧!这个装完以后我们的基础环境就弄好啦!

3. 安装Docker环境

官网地址:https://www.docker.com/

安装介绍:https://docs.docker.com/engine/install/centos/

建议参考官网

3.1 卸载本地老版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.2 设置仓库

国内已经无法正常安装,使用阿里云镜像仓库,安装

首先修改 /etc/sysctl.conf 开启ipv4转发

net.ipv4.ip_forward=1

安装一些工具包

yum install -y yum-utils device-mapperpersistent-data lvm2

添加阿里云 Docker 镜像仓库

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存

yum makecache fast

3.3 安装docker Engine

yum -y install docker-ce

启动

systemctl start docker

查看版本

docker version

配置阿里云镜像仓库

阿里云官网搜 容器镜像服务 https://www.aliyun.com/search?k=容器镜像服务

立即开通 支付宝账号登录就行

点击个人版本

创建个人版

点击查看镜像加速器

跟着文档操作即可

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hs5yecpy.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

可能你看到篇文章的时候阿里的也GG了,这里还有些其他大佬提供的镜像源。可以都加上试试。或者自己百度一下。

java 复制代码
{
  "registry-mirrors" : [
    "https://dockerhub.icu",
    "https://docker.chenby.cn",
    "https://docker.1panel.live",
    "https://docker.awsl9527.cn",
    "https://docker.anyhub.us.kg",
    "https://dhub.kubesre.xyz"
  ]
}

设置 Docker 服务开机自启动

sudo systemctl enable docker

4. 数据库 MySQL 安装

https://hub.docker.com/search?q=mysql

  • 下载镜像文件(当前默认下载latest版本已经是9.0版本,根据自己情况下载)

    docker pull mysql:8.4.2

bash 复制代码
docker run -itd --name mysql \
 -p 3306:3306 \
 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.4.2
  • 将需要挂载的文件夹,复制配置文件,具体看你自己容器内的地址,有的 my.cnf 可能在 /etc/下
java 复制代码
mkdir -p /mydata/mysql/{conf,logs,data,mysql-files}
docker cp mysql:/etc/mysql/my.cnf /mydata/mysql/conf/my.cnf 
docker cp mysql:/etc/mysql/conf.d /mydata/mysql/conf/conf.d

:::success

这里有个小坑,一定不要随便修改配置文件的权限,否则会导致配置不生效。我当时就是 chmod 777 ,然后怎么弄都没生效,然后看日志提示一点点解决的。

:::

  • 删除容器
shell 复制代码
docker stop mysql8
docker rm mysql8
  • 重新运行容器并挂载
java 复制代码
docker run -itd --name mysql8 \
                 -p 3306:3306 \
                 -v /mydata/mysql/conf:/etc/mysql \
                 -v /mydata/mysql/logs:/logs \
                 -v /mydata/mysql/data:/var/lib/mysql \
                 -v /mydata/mysql/mysql-files:/var/lib/mysql-files \
                 -e MYSQL_ROOT_PASSWORD=root@123456 mysql:8.4.2 
  • 配置开机自启
shell 复制代码
docker update --restart=always  mysql8
  • 根据实际情况做一些配置上的调整(无特殊要求直接跳过这一步)
java 复制代码
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql

max_allowed_packet= 1024M
secure-file-priv= NULL
wait_timeout=86400
interactive_timeout=86400
default-time_zone='+8:00'
default-authentication-plugin=mysql_native_password
sql_mode =STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
skip-name-resolve
# Custom config should go here
!includedir /etc/mysql/conf.d/

5. 安装 Redis

默认最新版本 6.2.6

shell 复制代码
docker pull redis
shell 复制代码
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
shell 复制代码
docker run  --name redis \
             -p 6379:6379 \
             -v /mydata/redis/data:/data \
             -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
             -d redis redis-server /etc/redis/redis.conf
                  

编辑 redis.conf 开启持久化

shell 复制代码
## 开启持久化
appendonly yes

使用可视化工具连接测试,有很多,根据自己喜好选一个就行

官方支持:https://redis.io/thank-you/redisinsight-the-best-redis-gui-35/

开源支持:https://goanother.com/cn/

以上只适用于学习时快速搭建,不适用于线上正式项目,线上数据库最好还是专项专用,部署在专门的服务器上,避免产生数据安全以及性能问题。

相关推荐
飞翔沫沫情25 分钟前
记一次 FastDFS 存储节点迁移:基于 scp 的实践与经验分享
经验分享·docker·fastdfs迁移
lzb_kkk3 小时前
【Redis】redis5种数据类型(哈希)
开发语言·redis·算法·缓存·哈希算法
lgbisha4 小时前
828华为云征文|华为云Flexus X实例docker部署Jitsi构建属于自己的音视频会议系统
docker·华为云·音视频
pokemon..5 小时前
MySQL主从复制与读写分离
数据库·mysql
码农鑫哥的日常5 小时前
MySQL高可用配置及故障切换
数据库·mysql
longlongqin5 小时前
redis的 stream数据类型实现 消息队列?
数据库·redis·缓存
Eliauk &5 小时前
【docker】通过云服务器安转Docker
java·运维·服务器·spring cloud·docker·容器
leidata6 小时前
MySQL系列—10.Innodb行格式
数据库·mysql
程序猿看视界6 小时前
Docker 华为云镜像加速器配置
docker·华为云·镜像加速
kingandlog7 小时前
Redis网络模型、通信协议、内存回收
java·网络·redis