Docker部署mysql,ngnix,redis,rabbitMQ,elasticsearch,nacos,sentinel,seata等

本文章以黑马的docker课程为例,除了讲解hmall的部署外,还包含服务器的购买(以阿里云为例)、linux环境下用docker的安装和项目部署mysql安装前后端项目打包和部署ngnix安装和配置自定义网络DockerCompose配置、redis安装及启动连接,以及RabbitMQ、elasticsearch、Nacos、Sentinel、Seata等常用中间件的安装,希望能帮助到初学者的学习。

说在前面:以一张图说明docker常见命令、容器和镜像的区别。对docker想要个更详细的理解的可以去看b站的课程,本文章没有讲解docker的原理,只是讲解了操作的命令。

1.安装Docker

1.1卸载旧版

首先如果系统中已经存在旧的Docker,则先卸载:

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

1.2配置Docker的yum库

首先要安装一个yum工具

yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源:

由于docker关闭了中国的访问渠道,所以要配置阿里云镜像,原先的download.docker.com不能再使用。

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

1.3安装Docker

最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.4启动和校验

# 启动Docker
systemctl start docker
​
# 停止Docker
systemctl stop docker
​
# 重启
systemctl restart docker
​
# 设置开机自启
systemctl enable docker
​
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

1.5配置镜像加速

这里以阿里云镜像加速为例。

1.6注册阿里云账号

首先访问阿里云网站:

阿里云-计算,为了无法计算的价值

注册一个账号。

1.7开通镜像服务

在首页的产品中,找到阿里云的容器镜像服务

点击后进入控制台:

首次可能需要选择立刻开通,然后进入控制台。

1.8配置镜像加速

 找到镜像工具下的镜像加速器

页面向下滚动,即可找到配置的文档说明:

具体命令如下:

# 创建目录
mkdir -p /etc/docker
​
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
​
# 重新加载配置
systemctl daemon-reload
​
# 重启Docker
systemctl restart docker

2.安装MySql

2.1安装mysql

由于mysql默认挂载的数据卷的目录结构较深,如果我们去操作数据卷目录会不太方便。在很多情况下,我们会直接将容器目录与宿主机指定目录挂载,这样,不仅操作数据卷方便,还能实现数据的持久保存,哪怕更新mysql版本,原先的数据依然存在。如将mysql的数据卷挂载到root目录下。

安装命令:

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  mysql:8.0.28

命令解读:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行。

  • --name mysql : 给容器起个名字叫mysql,你可以叫别的。

  • -p 3306:3306 : 设置端口映射。

    • 容器是隔离环境,外界不可访问。但是可以将宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。

    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。

    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口

  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定

    • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

  • -v : 配置本地数据卷挂载,以data为例,不配置会默认挂载在/var/lib/docker/volumes/data/_data目录下,配置本地数据卷后不仅操作数据卷方便,还能实现数据的持久保存。

    • 格式:-v 要配置到的本地目录:对应镜像原始挂载目录,镜像原始的挂载目录要去DockerHub网站或者软件的官方网站中查看。

    • 注意:本地目录或文件必须以 /./开头,如果直接以名字开头,会被识别为数据卷名而非本地目录名。

  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0.28,其中REPOSITORY可以理解为镜像名,TAG是版本号

    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

2.2 开放远程连接端口和授权

1.要远程连接mysql,还要在云服务器控制台防火墙中开放3306端口。

2.执行以下代码,授权mysql远程登录。

docker exec -it mysql bash
mysql -uroot -p
#输入密码
​
#进入到mysql
use mysql;
select host, user, authentication_string, plugin from user;
 
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
(设置远程登录密码123456,密码别设置的太简单,否则知道你服务器ip就随便登录你的mysql了)
​
// 设置远程连接权限
grant all on *.* to 'root'@'%';
​
//刷新权限
flush privileges;

2.3 远程连接mysql

操作见ubuntu安装mysql并使用datagrip远程连接_ubuntu datagrip-优快云博客

3.部署后端

3.1导入准备好的hmall

利用maven打成jar包

3.2 上传服务器

将dockerfile和刚刚打好的jar包上传到root目录下

3.3 构建镜像

命令:

docker build -t hmall .

命令解释见Docs

3.4 自定义网络

常见命令:

命令 说明 文档地址
docker network create 创建一个网络 docker network create
docker network ls 查看所有网络 docs.docker.com
docker network rm 删除指定网络 docs.docker.com
docker network prune 清除未使用的网络 docs.docker.com
docker network connect 使指定容器连接加入某网络 docs.docker.com
docker network disconnect 使指定容器连接离开某网络 docker network disconnect
docker network inspect 查看网络详细信息 docker network inspect
3.4.1 步骤
#创建网络
docker network create hmall
#将mysql加入hmall网络
docker network connect hmall mysql
#查看mysql容器,检查是否加入成功
docker inspect mysql

3.4 运行容器

#创建并运行容器,并通过--network将其加入hmall网络,这样才能通过容器名访问mysql
docker run -d --name hmall --network hmall -p 8080:8080 hmall
#查看容器是否启动成功,查看所有容器
docker ps
#查看hmall日志
docker logs -f hmall

成功部署截图

4.部署前端nginx

4.1 将nginx文件上传

4.2 创建nginx容器


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值