今天小编给大家分享一下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.conf privileged: true # 这个必须要,解决Nginx的文件调用的权限问题 MysqL: image: MysqL:5.7.27 ports: - 3306:3306 environment: # 指定用户root的密码 - MysqL_ROOT_PASSWORD= redis: ports: - 6379:6379 image: redis:latest vueblog: image: vueblog:latest build: . # 表示以当前目录下的Dockerfile开始构建镜像 ports: - 81:81 depends_on: # 依赖与MysqL、redis,其实可以不填,默认已经表示可以 - MysqL - redis nacos1: hostname: nacos1 container_name: nacos1 image: nacos/nacos-server:latest volumes: # 需要添加MysqL8的插件 #- ./nacos/plugins/MysqL/:/home/nacos/plugins/MysqL/ # 把日志文件映射出来 - /root/nacos1:/home/nacos/logs # 把配置文件映射出来 - /root/nacos1/custom.properties:/home/nacos/init.d/custom.properties environment: # 设置环境变量,相当于docker run命令中的-e - JVM_xms=512m - JVM_XMX=512m - JVM_XMN=128m #- MODE=standalone #单机版 ports: - "8848:8848" env_file: # 集群配置文件 - /root/nacos1/nacos-hostname.env restart: always depends_on: - MysqL
B.springboot配置(自己的项目)
配置中的MysqL和redis配置都是用的服务名而不是ip地址
server: port: 81 spring: servlet: multipart: max-file-size: 10MB max-request-size: 10MB profiles: active: dev # MysqL 配置 datasource: url: jdbc:MysqL://MysqL:3306/blog4?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8 username: password: # schema: classpath:springbootsecurityauth.sql sql-script-encoding: utf-8 initialization-mode: always driver-class-name: com.MysqL.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # 初始化大小,最小,最大 initialSize: 1 minIdle: 3 maxActive: 20 # 配置获取连接等待超时的时间 maxWait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenevictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minevictableIdleTimeMillis: 30000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false # 打开PSCache,并且指定每个连接上PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 ,slf4j filters: stat,wall,slf4j # 通过connectProperties属性来打开mergesql功能;慢sql记录 connectionProperties: druid.stat.mergesql=true;druid.stat.slowsqlMillis=5000 redis: database: 6 host: redis port: 6379 timeout: 5000s # 连接超时时长(毫秒) jedis: pool: max-active: 20 #连接池最大连接数(使用负值表示没有限制) max-idle: 8 #连接池中的最大空闲连接 max-wait: -1s #连接池最大阻塞等待时间(使用负值表示没有限制) min-idle: 0 #连接池中的最小空闲连接 password: #rootroot
C.Dockerfile文件
FROM java:8 EXPOSE 81 ADD vueblog.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java", "-jar", "/app.jar"]
D.打包springboot项目并命名为配置中的服务名
- /root/Nginx/html
- /root/Nginx/Nginx.conf
#user root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #这里配置nacos的ip:端口,因为Nginx和nacos在同一个网络下,这里可以用服务名访问 upstream nacos { server nacos1:8848 weight=1 max_fails=2 fail_timeout=10s; #server nacos2:8848 weight=1 max_fails=2 fail_timeout=10s; #server nacos3:8848 weight=1 max_fails=2 fail_timeout=10s; } server { listen 80; server_name localhost; location / { root /usr/share/Nginx/html/front; try_files $uri $uri/ /index.html last; # 别忘了这个哈 index index.html index.htm; } location /admin { alias /usr/share/Nginx/html/admin; expires 1d; index index.html; autoindex on; } location /nacos { proxy_pass http://nacos; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
- /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 # metrics for prometheus management.endpoints.web.exposure.include=* # metrics for elastic search #management.metrics.export.elastic.enabled=false #management.metrics.export.elastic.host=http://localhost:9200 # metrics for influx #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的数据库信息
#nacos dev env PREFER_HOST_MODE=hostname NACOS_SERVERS=nacos1:8848 MysqL_SERVICE_HOST=MysqL MysqL_SERVICE_DB_NAME=nacos MysqL_SERVICE_PORT=3306 MysqL_SERVICE_USER= MysqL_SERVICE_PASSWORD= JVM_xms=512m JVM_XMX=512m JVM_XMN=256m JVM_MS=64m JVM_MMS=128m
最后的目录结构
先把MysqL实例运行起来(千万不要直接docker-compose up -d把所有的实例都运行起来)
docker-compose up -d MysqL
F. 由于我的nacos是后期添加的,所以可以提前在MysqL容器中添加好nacos数据库再启动(如果你没有数据库请提前添加)
启动
docker-compose up
停止
docker-compose down
以上就是“docker怎么搭建nacos+Nginx+MysqL+redis+springboot项目”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程之家行业资讯频道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。