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.22
docker exec mq1 rabbitmq-plugins enable rabbitmq_management
docker exec mq1 rabbitmqctl add_user admin 123456
docker exec mq1 rabbitmqctl set_user_tags admin administrator
docker 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-AnimalExperiment
server.port=8188
ispring.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=false
ws.extends.enable-api-doc=true
#redis config redis配置
spring.session.store-type=redis
spring.redis.host=172.17.0.5
spring.redis.port=6379
spring.redis.password=123456
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-wait=-1
spring.redis.timeout=3000
#mysql config mysql配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://172.17.0.2:3306/animal_experiment?useSSL=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL
spring.datasource.username=root
spring.datasource.password=123456
#spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.jpa.database=MYSQL
spring.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.4
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
spring.rabbitmq.virtual-host=/
spring.rabbitmq.listener.simple.retry.enabled=true
##### minio配置
minio.server.endpoint=172.17.0.6
minio.server.port=9000
minio.server.secure=false
minio.server.access-key=minioadmin
minio.server.secret-key=minioadmin
##### 我的项目须要用到的bucket 创立对应的bucket
minio.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
发表回复