1.我的项目简介

动物试验管理系统面向生物科技相干人员提供了一系列动物试验相干性能。

2.我的项目架构

3.部署平台

Win10->VMware->CentOS7->Docker

4.具体部署

前端局部:dist.zip
后端局部:animal.jar、animal.properties

4.1.Mysql

docker run --name=mysql -d --privileged=true -p 13307:3306 -v /share/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="123456" mysql:5.7.39

mysql的数据不是放在容器中,而是通过关联、映射而放在了Docker外CentOS中
查看Mysql容器是否启动,应用Navicat测试是否建设连贯
如果连贯胜利,建设数据库animal_experiment,建设表,向表中插入数据
如果连贯失败,依据提醒进行排错(没有应用容器的内部IP、端口号;明码谬误;防火墙)

4.2.Redis

docker run --privileged=true -p 16379:6379 --name=redis -v /share/redis/data:/data -d redis redis-server --requirepass 123456

Redis的数据不是放在容器中,而是通过关联、映射而放在了Docker外CentOS中
查看Redis容器是否启动,在docker外CentOS中应用redis-cli测试是否建设连贯,测试是否可能应用配置的明码进行认证

4.3.RabbitMQ

docker run -d -p 5672:5672 -p 15672:15672 --name=mq1 rabbitmq:rabbitmq:3.9.22docker exec mq1 rabbitmq-plugins enable rabbitmq_managementdocker exec mq1 rabbitmqctl add_user admin 123456docker exec mq1 rabbitmqctl set_user_tags admin administratordocker exec mq1 rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

查看Mysql容器是否启动,测试是否应用Chrome拜访RabbitMQ的内部IP、端口,在登陆界面应用账号guest、明码guest登录,查看adminstartor中是否存在admin及明码、主机

4.4.Minio

docker run -itd -p 19000:9000 -p 19090:19090 \  --name minio1 \  -e "MINIO_ACCESS_KEY=minioadmin" \  -e "MINIO_SECRET_KEY=minioadmin" \  -v /share/data:/data \  -v /share/config:/root/.minio \  minio/minio server /data \  --console-address ":19090"

查看Mysql容器是否启动,Minio的数据不是放在容器中,而是通过关联、映射而放在了Docker外CentOS中
测试是否在浏览器中应用内部IP、端口号拜访Minio,在登陆页面是否应用账号minioadmin、明码minioadmin

4.5.Tomcat(animal.jar)

4.5.1编辑配置文件

查看并记录容器mysql、redis、rabbitmq、minio的外部IP、地址。
编辑animal.properties

spring.application.name=Leiren-AnimalExperimentserver.port=8188ispring.profiles.active=test#拜访排除门路 (不必动)access.token.exclude.path.patterns=/,/error,/actuator/**,/login,/getTransEncryptKey,/validateCode/**,/swagger-ui.html,/verifyCode/**,/register,/isRegistered/**,/file/download/**#ws-extends-starter配置ws.extends.always-force-close=falsews.extends.enable-api-doc=true#redis config redis配置spring.session.store-type=redisspring.redis.host=172.17.0.5spring.redis.port=6379spring.redis.password=123456spring.redis.jedis.pool.max-idle=8spring.redis.jedis.pool.min-idle=0spring.redis.jedis.pool.max-active=8spring.redis.jedis.pool.max-wait=-1spring.redis.timeout=3000#mysql config mysql配置spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://172.17.0.2:3306/animal_experiment?useSSL=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULLspring.datasource.username=rootspring.datasource.password=123456#spring.datasource.type=com.zaxxer.hikari.HikariDataSourcespring.jpa.database=MYSQLspring.jpa.show-sql=true#解决事务中懒加载session敞开问题spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true#动物试验管理系统的用户默认明码default-password=123456#rabbitmq 配置信息spring.rabbitmq.host=172.17.0.4spring.rabbitmq.port=5672spring.rabbitmq.username=adminspring.rabbitmq.password=123456spring.rabbitmq.virtual-host=/spring.rabbitmq.listener.simple.retry.enabled=true##### minio配置 minio.server.endpoint=172.17.0.6minio.server.port=9000minio.server.secure=falseminio.server.access-key=minioadminminio.server.secret-key=minioadmin##### 我的项目须要用到的bucket 创立对应的bucketminio.server.must-buckets=system,ethics,experiment,room-cage,animal

4.5.2 创立、启动容器

docker run -dit --name=animal \-p 18188:8188 \-v /opt/animalExperiment:/opt \kdvolder/jdk8 \java -jar -Dspring.config.location=/opt/animal.properties /opt/animal.jar

查看容器animal是否启动,日志是否没有ERROR

4.6.Nginx

4.6.1 编辑配置文件

查看并记录容器animal的IP
创立一个animal_experiment.conf

server {    listen       8009;    location /{        root   /var/www/dist; #对应dist的绝对路径        index  index.html index.htm;    }    location ^~ /api/{        rewrite /api/(.*) /$1 break; #去掉门路中的/api 不然无法访问到服务器        proxy_pass http://172.17.0.7:8188;    }}

批改nginx.conf文件中 user 应用root,linux做什么都要和权限打交道,tomcat的部署都是用的是root,所以这里就要批改权限.

关上dist目录中 static/js/app.6cc84a26.js文件,全局查找 ws://172.172.172.102 替换为你的 后端的服务器的IP地址 (有两处):
sed -e "s|ws://172.172.172.102|ws://192.17.0.7|g" -i.bak app.6cc84a26.js

4.6.2 创立、启动容器

docker run  -p 18880:80 -p 18889:8009 --name mynginx \-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf \-v /etc/nginx/conf.d:/etc/nginx/conf.d \-v /var/www:/var/www \-d  nginx

Nginx通过关联、映射理论应用Docker外CentOS中的配置文件、前端局部

查看容器nginx是否启动,测试是否应用内部IP、端口号在浏览器中拜访nginx,登陆页面是否有验证码,输出账号admin、明码123456、验证码之后点击登录是否登陆胜利

5.总结

本次部署具备肯定的先后顺序:
依据我的项目架构中的各个服务之间关系(Nginx拜访Tomcat(animal.jar),Tomcat拜访Mysql、Nginx、Redis、Minio),先测试Mysql、Nginx、Redis、Minio是否失常,再测试Tomcat是否失常,最初测试Nginx是否失常。

本次docker部署我的项目应用的是默认网络模式,容器重启可能会产生IP扭转的状况,在调试过程常常须要更改配置文件的中各个服务的IP,带来很大的不便,前期思考应用动态IP