docker怎么搭建nacos+nginx+mysql+redis+springboot项目
docker怎么搭建nacos+nginx+mysql+redis+springboot项目
今天小编给大家分享一下docker怎么搭建nacos+nginx+mysql+redis+springboot项目的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
请提前安装docker和docker-compose并自行配置镜像加速。提前说明:我的整个项目搭建其实是分的两次,第一次部署时只有:nginx+mysql+redis+springboot项目,nacos是后期添加进去自娱自乐的。
A.docker-compose.yml文件
version:"3"services:nginx:#服务名称,用户自定义image:nginx:latest#镜像版本ports:-80:80#暴露端口volumes:#挂载-/root/nginx/html:/usr/share/nginx/html-/root/nginx/nginx.conf:/etc/nginx/nginx.confprivileged:true#这个必须要,解决nginx的文件调用的权限问题mysql:image:mysql:5.7.27ports:-3306:3306environment:#指定用户root的密码-MYSQL_ROOT_PASSWORD=redis:ports:-6379:6379image:redis:latestvueblog:image:vueblog:latestbuild:.#表示以当前目录下的Dockerfile开始构建镜像ports:-81:81depends_on:#依赖与mysql、redis,其实可以不填,默认已经表示可以-mysql-redisnacos1:hostname:nacos1container_name:nacos1image:nacos/nacos-server:latestvolumes:#需要添加mysql8的插件#-./nacos/plugins/mysql/:/home/nacos/plugins/mysql/#把日志文件映射出来-/root/nacos1:/home/nacos/logs#把配置文件映射出来-/root/nacos1/custom.properties:/home/nacos/init.d/custom.propertiesenvironment:#设置环境变量,相当于dockerrun命令中的-e-JVM_XMS=512m-JVM_XMX=512m-JVM_XMN=128m#-MODE=standalone#单机版ports:-"8848:8848"env_file:#集群配置文件-/root/nacos1/nacos-hostname.envrestart:alwaysdepends_on:-mysql
B.springboot配置(自己的项目)
配置中的mysql和redis配置都是用的服务名而不是ip地址
server:port:81spring:servlet:multipart:max-file-size:10MBmax-request-size:10MBprofiles:active:dev#mysql配置datasource:url:jdbc:mysql://mysql:3306/blog4?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8username:password:#schema:classpath:springbootsecurityauth.sqlsql-script-encoding:utf-8initialization-mode:alwaysdriver-class-name:com.mysql.cj.jdbc.Drivertype:com.alibaba.druid.pool.DruidDataSource#初始化大小,最小,最大initialSize:1minIdle:3maxActive:20#配置获取连接等待超时的时间maxWait:60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis:60000#配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis:30000validationQuery:select'x'testWhileIdle:truetestOnBorrow:falsetestOnReturn:false#打开PSCache,并且指定每个连接上PSCache的大小poolPreparedStatements:truemaxPoolPreparedStatementPerConnectionSize:20#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,slf4jfilters:stat,wall,slf4j#通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties:druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000redis:database:6host:redisport:6379timeout:5000s#连接超时时长(毫秒)jedis:pool:max-active:20#连接池最大连接数(使用负值表示没有限制)max-idle:8#连接池中的最大空闲连接max-wait:-1s#连接池最大阻塞等待时间(使用负值表示没有限制)min-idle:0#连接池中的最小空闲连接password:#rootroot
C.Dockerfile文件
FROMjava:8EXPOSE81ADDvueblog.jarapp.jarRUNbash-c'touch/app.jar'ENTRYPOINT["java","-jar","/app.jar"]
D.打包springboot项目并命名为配置中的服务名
E.在对应目录下创建文件夹或文件
- /root/nginx/html
- /root/nginx/nginx.conf
#userroot;worker_processes1;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;#这里配置nacos的ip:端口,因为nginx和nacos在同一个网络下,这里可以用服务名访问upstreamnacos{servernacos1:8848weight=1max_fails=2fail_timeout=10s;#servernacos2:8848weight=1max_fails=2fail_timeout=10s;#servernacos3:8848weight=1max_fails=2fail_timeout=10s;}server{listen80;server_namelocalhost;location/{root/usr/share/nginx/html/front;try_files$uri$uri//index.htmllast;#别忘了这个哈indexindex.htmlindex.htm;}location/admin{alias/usr/share/nginx/html/admin;expires1d;indexindex.html;autoindexon;}location/nacos{proxy_passhttp://nacos;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerREMOTE-HOST$remote_addr;add_headerX-Cache$upstream_cache_status;add_headerCache-Controlno-cache;}error_page500502503504/50x.html;location=/50x.html{roothtml;}}}
- /root/nacos1
# 把配置文件映射出来
- /root/nacos1/custom.properties
#spring.security.enabled=false#management.security=false#security.basic.enabled=false#nacos.security.ignore.urls=/**#management.metrics.export.elastic.host=http://localhost:9200#metricsforprometheusmanagement.endpoints.web.exposure.include=*#metricsforelasticsearch#management.metrics.export.elastic.enabled=false#management.metrics.export.elastic.host=http://localhost:9200#metricsforinflux#management.metrics.export.influx.enabled=false#management.metrics.export.influx.db=springboot#management.metrics.export.influx.uri=http://localhost:8086#management.metrics.export.influx.auto-create-db=true#management.metrics.export.influx.consistency=one#management.metrics.export.influx.compressed=true
- /root/nacos1/nacos-hostname.env
配置nacos的数据库信息
#nacosdevenvPREFER_HOST_MODE=hostnameNACOS_SERVERS=nacos1:8848MYSQL_SERVICE_HOST=mysqlMYSQL_SERVICE_DB_NAME=nacosMYSQL_SERVICE_PORT=3306MYSQL_SERVICE_USER=MYSQL_SERVICE_PASSWORD=JVM_XMS=512mJVM_XMX=512mJVM_XMN=256mJVM_MS=64mJVM_MMS=128m
最后的目录结构
先把mysql实例运行起来(千万不要直接docker-compose up -d把所有的实例都运行起来)
docker-composeup-dmysql
F. 由于我的nacos是后期添加的,所以可以提前在mysql容器中添加好nacos数据库再启动(如果你没有数据库请提前添加)
启动
docker-composeup
停止
docker-composedown
以上就是“docker怎么搭建nacos+nginx+mysql+redis+springboot项目”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。
推荐阅读
-
MySQL索引怎么创建和删除
MySQL索引怎么创建和删除这篇文章主要介绍了MySQL索引怎么创...
-
MySQL查看锁的代码怎么写
MySQL查看锁的代码怎么写本文小编为大家详细介绍“MySQL查看...
-
在 PHP 7 中不要做的 10 件事
1.不要使用MySQL_函数这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP7已经把它们从核心...
-
Zend Studio使用教程:在Docker容器中调试PHP Web应用(三)
-
「docker+gdb」调试 PHP 源码,看 strva
-
MySQL体系架构,超详细
-
利用PHP访问MySql数据库以及增删改查实例操作
关于利用PHP访问MySql数据库的逻辑操作以及增删改查实例操作PHP访问MySql数据库˂?php//造连...
-
密码攻防系列文章6:服务器MySQL账号扫描及攻击
-
计算机毕业设计php创建mysql数据库
-
使用laradock创建laravel本地开发环境