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 下载到你执行命令的路径下,所以要注意一下
初始化
vagrant init centos/7
初始化完成后,会下载一个 Vagrantfile 文件。其实这个就是 New 前面的 Vagrantfile,我们也可以自己新建一个同名文件,把内容复制粘贴进去就行。
看到如下界面表示初始化完成
拉起
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源,方便后续下载包
先备份
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 缓存并更新
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=%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E6%9C%8D%E5%8A%A1
立即开通 支付宝账号登录就行
点击个人版本
创建个人版
点击查看镜像加速器
跟着文档操作即可
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了,这里还有些其他大佬提供的镜像源。可以都加上试试。或者自己百度一下。
{
"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
docker run -itd --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.4.2
- 将需要挂载的文件夹,复制配置文件,具体看你自己容器内的地址,有的
my.cnf
可能在 /etc/下
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 ,然后怎么弄都没生效,然后看日志提示一点点解决的。
:::
- 删除容器
docker stop mysql8
docker rm mysql8
- 重新运行容器并挂载
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
- 配置开机自启
docker update --restart=always mysql8
- 根据实际情况做一些配置上的调整(无特殊要求直接跳过这一步)
[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
docker pull redis
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
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 开启持久化
## 开启持久化
appendonly yes
使用可视化工具连接测试,有很多,根据自己喜好选一个就行
官方支持:https://redis.io/thank-you/redisinsight-the-best-redis-gui-35/
开源支持:https://goanother.com/cn/
以上只适用于学习时快速搭建,不适用于线上正式项目,线上数据库最好还是专项专用,部署在专门的服务器上,避免产生数据安全以及性能问题。