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: 81spring:  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:8EXPOSE 81ADD vueblog.jar app.jarRUN bash -c 'touch /app.jar'ENTRYPOINT ["java", "-jar", "/app.jar"]

 D.打包springboot项目并命名为配置中的服务名

E.在对应目录下创建文件夹或文件

      – /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 prometheusmanagement.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 envPREFER_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

 最后的目录结构

docker怎么搭建nacos+nginx+mysql+redis+springboot项目

先把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项目的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/157537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月4日 23:54:53
下一篇 2025年12月5日 00:13:24

相关推荐

  • 网络进化!

    Web 应用程序从静态网站到动态网页的演变是由对更具交互性、用户友好性和功能丰富的 Web 体验的需求推动的。以下是这种范式转变的概述: 1. 静态网站(1990 年代) 定义:静态网站由用 HTML 编写的固定内容组成。每个页面都是预先构建并存储在服务器上,并且向每个用户传递相同的内容。技术:HT…

    2025年12月24日
    000
  • 为什么多年的经验让我选择全栈而不是平均栈

    在全栈和平均栈开发方面工作了 6 年多,我可以告诉您,虽然这两种方法都是流行且有效的方法,但它们满足不同的需求,并且有自己的优点和缺点。这两个堆栈都可以帮助您创建 Web 应用程序,但它们的实现方式却截然不同。如果您在两者之间难以选择,我希望我在两者之间的经验能给您一些有用的见解。 在这篇文章中,我…

    2025年12月24日
    000
  • nginx的css不起作用怎么办

    nginx的css不起作用是因为误删文件导致的,其解决办法就是打开相应的文件并添加代码“include /etc/nginx/mime.types;”,然后重启Nginx守护即可。 本文操作环境:windows7系统、css3版,DELL G3电脑。 nginx的css不起作用是什么原因? 最近部署…

    2025年12月24日 好文分享
    000
  • CSS如何实现任意角度的扇形(代码示例)

    本篇文章给大家带来的内容是关于CSS如何实现任意角度的扇形(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果 扇形绘制 .shanxing{ position:…

    2025年12月24日
    000
  • html如何设置新版本_为HTML页面设置版本更新提示【提示】

    可通过meta标签检测、Service Worker监听、Last-Modified头比对、manifest.json校验四种方式提示HTML页面新版本更新。 如果您希望用户在访问HTML页面时获知存在新版本并提示更新,可以通过客户端缓存控制与版本标识机制触发提示行为。以下是实现该功能的多种方法: …

    2025年12月23日
    000
  • php如何html_在PHP代码中输出HTML内容【输出】

    必须确保PHP正确解析并输出原始HTML字符串而非转义文本;可通过echo/print直接输出、heredoc语法处理多行含变量HTML,或用PHP结束标签切换至纯HTML模式。 如果您在PHP脚本中需要将HTML代码作为响应内容发送给浏览器,则必须确保PHP正确解析并输出原始HTML字符串,而非将…

    2025年12月23日
    000
  • 运行html报错404怎么改_改html运行404错误方法【技巧】

    404错误是因服务器找不到资源,解决方法包括:检查文件路径与URL一致,确认文件在服务器根目录;启动Web服务器并测试localhost首页;核对配置文件的DocumentRoot和DirectoryIndex设置;排查文件名大小写及扩展名错误;使用浏览器开发者工具查看Network中404请求的具…

    2025年12月23日
    000
  • html5乱码怎么设置_html5用meta charset=utf-8设编码防页面乱码【设置】

    HTML5中文乱码需四步解决:一、在首行添加 如果您在浏览 HTML5 页面时遇到中文显示为乱码的情况,则可能是由于网页未正确声明字符编码。以下是解决此问题的步骤: 一、在 head 中添加 meta charset 声明 HTML5 推荐使用 meta charset=”UTF-8&#…

    2025年12月23日
    000
  • 如何让别人下载html_设置HTML文件供他人下载链接【链接】

    可通过四种方法强制下载HTML文件:一、用download属性设超链接;二、服务端配置Content-Disposition响应头;三、打包为ZIP提供下载;四、用JavaScript生成Blob并触发下载。 如果您希望他人能够直接下载某个HTML文件,而非在浏览器中打开查看,需要通过特定方式设置链…

    2025年12月23日
    000
  • putty怎么运行html_putty连接环境运行html方法【教程】

    1、可通过本地浏览器查看:使用SFTP下载HTML文件后双击用默认浏览器打开预览;2、启动轻量级Web服务器:在PuTTY中用Python命令python3 -m http.server 8000运行并本地访问服务器IP:8000查看;3、配置Apache:安装Apache2服务,将HTML文件放入…

    2025年12月23日
    000
  • 如何写html模板_编写可复用的HTML模板文件【复用】

    可复用HTML模板有五种方法:一、服务端包含(SSI);二、JavaScript动态加载;三、Web Components自定义元素;四、构建工具(如EJS+Webpack)预编译;五、iframe嵌入。 如果您希望在多个网页中重复使用相同的HTML结构,避免每次手动编写重复代码,则需要创建可复用的…

    2025年12月23日
    000
  • html如何引入别的html_引入其他HTML文件内容技术【方法必学】

    可在HTML中嵌入另一HTML文件内容的方法有五种:一、iframe标签静态嵌入;二、fetch API动态加载;三、object标签嵌入;四、服务端包含(SSI);五、ES6模块导入HTML模板字符串。 如果您希望在当前HTML文件中嵌入另一个HTML文件的内容,而不是通过跳转链接的方式访问,就需…

    2025年12月23日
    000
  • html5视频怎么打开_HTML5 video标签加controls点击播放视频文件【打开】

    HTML5视频无法播放的解决方法包括:一、正确添加controls和src属性,并设置宽高与preload;二、用多个source标签提供MP4、WebM等兼容格式;三、确保服务器配置正确MIME类型;四、autoplay需配合muted使用;五、JavaScript动态加载时需捕获play() P…

    2025年12月23日
    000
  • html如何优化_优化HTML代码性能与加载速度【性能】

    网页加载缓慢等问题源于HTML冗余、资源阻塞或语义不当,需从精简标记、优化资源加载、启用现代特性、减少重排重绘、配置服务器传输五方面优化。 如果您发现网页加载缓慢、首屏渲染时间过长或Lighthouse评分偏低,则可能是HTML结构冗余、资源加载阻塞或语义不当所致。以下是优化HTML代码性能与加载速…

    2025年12月23日
    000
  • html中怎么运行sql语句_html中运行sql语句方法【教程】

    必须通过后端服务执行SQL操作。一、PHP与MySQL交互:使用PHP脚本在服务器端连接数据库,执行查询并嵌入HTML输出,避免硬编码凭证。二、Ajax调用API:前端通过JavaScript向后端API发送请求,服务端执行SQL并返回JSON数据,前端动态渲染结果。三、SQLite与JavaScr…

    2025年12月23日
    000
  • Html如何压缩图片_HTML页面中压缩图片大小方法【压缩】

    压缩HTML图片可从五方面入手:一、用TinyPNG等工具在线压缩;二、用srcset实现响应式图片;三、转为WebP/AVIF格式并用标签兼容;四、按实际尺寸裁剪并设width/height属性;五、通过CDN或Nginx动态压缩。 如果您在HTML页面中嵌入图片时发现页面加载缓慢,可能是由于图片…

    2025年12月23日
    000
  • html如何调用外部css_html调用外部css技巧【教程】

    HTML调用外部CSS的五种方式:一、link标签引入;二、@import在CSS中导入;三、JavaScript动态创建link;四、HTTP响应头声明Content-Type;五、data URL内联小型CSS。 如果您希望在HTML文件中应用样式,但不想将CSS代码直接写入HTML内部,则需要…

    2025年12月23日
    000
  • linux怎么运行html文件_linux运行html文件方法【教程】

    可通过图形界面直接右键打开HTML文件;2. 使用终端命令如firefox或google-chrome调用浏览器;3. 用Python启动http.server搭建本地服务器预览;4. 设置文件权限并部署至Apache等Web服务器运行。 如果您编写了一个HTML文件并希望在Linux系统中查看其效…

    2025年12月23日
    000
  • 如何转移HTML项目到新服务器_迁移部署步骤【指南】

    HTML项目迁移需五步:一、打包项目为ZIP并校验;二、用scp或SFTP上传至服务器;三、解压并核对文件结构;四、复制到Web根目录、设所有权及644/755权限;五、验证DNS解析与Nginx/Apache配置并重载服务。 如果您已完成本地开发或旧服务器上的HTML项目,需要将其完整迁移到新服务…

    2025年12月23日
    200
  • 如何在HTML中正确显示汉字_编码设置与兼容处理【教程】

    应声明UTF-8编码并确保文件保存为UTF-8无BOM格式,同时配置HTTP响应头、统一外部资源编码、校验HTML结构及转义特殊字符。 如果您在HTML页面中看到汉字显示为乱码或方块,则可能是由于字符编码未正确声明或浏览器未能识别当前文档的编码格式。以下是确保汉字在HTML中正确显示的具体操作步骤:…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信