概述:基于java及vue开发的前后端web应用, 整套系统由 一个后端服务+一个管理端前端vue+一个用户端前端vue项目组, 涉及的中间件及第三方应用有 mysql、redis、nginx, 采用docker方式部署整套系统
一、docker 安装
1、参考文档:https://docs.docker.com/engine/install/centos/
2、安装步骤详细说明:
1)、清理或卸载旧的或已安装的docker版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2)、设置仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3)、安装docker 其中需要输入命令 一直输 y
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4)、启动docker 至此 docker已安装完成
sudo systemctl start docker
二、mysql安装
基于docker容器安装mysql;注意:启动容器时需要把mysql的数据存储及配置文件挂载到宿主机
1、拉取mysql镜像 这里使用的mysql版本为5.7.+ 所以拉取时 指定版本为5.7
docker pull mysql:5.7
2、使用docker iamges 命令可以查看刚拉下来的mysql镜像
3、处理需挂载的目录
使用挂载卷的方式 将mysql的 conf data log 文件夹挂载到宿主机
mkdir -p /opt/docker/mysql5.7/data
mkdir -p /opt/docker/mysql5.7/log
4、运行mysql镜像
docker run -p 3306:3306 --name mysql5.7 --restart=always --privileged=true -v /opt/docker/mysql5.7/log:/var/log/ -v /opt/docker/mysql5.7/data:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=BYHZ-2019@root.inc -d mysql:5.7
上述运行命令详解
参数 | 说明 |
---|
-p 3306:3306 | 指定宿主机端口与容器端口映射关系 |
–name mysql | 创建的容器名称 |
–restart=always | 总是跟随docker启动 |
–privileged=true | 获取宿主机root权限 |
-v /opt/docker/mysql5.7/log:/var/log/ | 映射日志目录,宿主机:容器 |
-v /opt/docker/mysql5.7/data:/var/lib/mysql | 映射数据目录,宿主机:容器 |
/opt/docker/mysql5.7/conf:/etc/mysql/mysql.conf.d | 映射配置目录,宿主机:容器 |
-v /etc/localtime:/etc/localtime:ro | 让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读 |
-e MYSQL_ROOT_PASSWORD=BYHZ-2019@root.inc | 指定mysql环境变量,root用户的密码为BYHZ-2019@root.inc |
-d mysql:5.7 | 后台运行mysql容器,版本是5.7 |
5、通过 docker ps 查看容器是否启动成功
三、redis安装
1、拉取redis镜像
docker pull reids
2、处理redis挂载文件
mkdir -p /opt/docker/redis
mkdir -p /opt/docker/redis/data
根据redis版本去官网下载对应的redis.conf文件 官网地址:https://redis.io/docs/management/config/
3、启动redis容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /opt/docker/redis/redis.conf:/etc/redis/redis.conf -v /opt/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
上述命令详解
命令 | 说明 |
---|
–restart=always | 总是开机启动 |
–log-opt max-size=100m --log-opt max-file=2 | 日志方面配置 |
-p 6379:6379 | 6379端口挂载 |
–name | 容器名称 |
-v /opt/docker/redis/redis.conf:/etc/redis/redis.conf | redis配置文件挂载到宿主机 |
-v /opt/docker/redis/data:/data | redis数据文件 |
-d redis | 后台启协redis |
redis-server /etc/redis/redis.conf | 以配置文件启动redis,加载容器内的conf文件 |
–appendonly yes | 开启redis 持久化 |
–requirepass 123456 | 设置redis密码 |
四、后端应用服务部署
1、创建后端服务包后所在目录
mkdir -p /opt/yunxiao/yx-projcet-server
2、在/opt/yunxiao/yx-projcet-server目录下 创建Dockerfile,dockerfile内容如下
FROM maven:3.8.4-openjdk-11 AS builder
COPY settings.xml /usr/share/maven/conf/settings.xml
FROM openjdk:8-jdk-alpine
MAINTAINER sgs
LABEL yx-server=1.0
COPY ./yx-server.jar /yx-server.jar
CMD java -Xms256m -Xmx512m -jar yx-server.jar
3、通过命令查看mysql 及 redis的内网ip 修改 项目的yml文件中mysql 及redis的ip,
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器id
然后将打成yx-server.jar包 上传至 /opt/yunxiao/yx-projcet-server目录下
4、在/opt/yunxiao/yx-projcet-server目录下 执行构建镜像命令
docker build -t yx-server .
5、因为存上文件上传功能 需把上传的文件挂臷到宿主机
mkdir -p /home/adds/uploadPath
6、启动后端服务容器
docker run -p 9888:9888 -v /home/adds/uploadPath:/home/adds/uploadPath --name yx-server -d yx-server
7、查看日志相关命令
a、查看容器实时日志
docker logs -f 容器id
b、查看历史日志
进入容器
docker exec -it 容器id /bin/sh
然后进入logback配置的日志路径
cd /logs/yx-server
8、后续更新部署时 只需将打的jar包上传至/opt/yunxiao/yx-projcet-server目录下 然后执行以下命令重启 后端服务容器
docker restart 容器id
五、前端部署
1、docker 拉取nginx镜像
docker pull nginx
2、创建前端包路径 及nginx配置文件路径及日志路径
mkdir /opt/yunxiao/yx-front
mkdir -p /opt/docker/nginx/conf.d
mkdir -p /opt/docker/nginx/log
注意: 需要先使用docker run -itd --name testnginx nginx 命启动一个nginx容器 然后将对应文件夹的内容复制到宿主机挂载卷下
docker cp 容器id:/etc/nginx/conf.d /opt/docker/nginx
然后再删除之前前面的nginx
3、 启动nginx容器
docker run -itd --name yx-nginx -v /opt/docker/nginx/conf.d:/etc/nginx/conf.d -v /opt/yunxiao/yx-front:/etc/nginx/html -v /opt/docker/nginx/log:/usr/log/nginx -p 8900:8900 -p 8901:8901 nginx
4、修改/opt/docker/nginx/conf.d 下的配置文件 将请求代理到正确的后端服务 及前端资源路径
5、上传打包好的前端资源至对应的路径下 重启nginx容器即可
6、后续更新部署前端资源时 只需将打包好的前端资源替换掉对应路径下的前端资源即可