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)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Inno Setup检测软件依赖环境是否安装
上一篇 2025年12月4日 23:58:57
下一篇 2025年12月5日 00:00:59

相关推荐

  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • 怎么在PHP代码中实现图片上传功能_PHP图片上传功能实现与安全处理教程

    首先创建含enctype的HTML表单,再用PHP接收文件,检查目录、移动临时文件,验证类型与大小,生成唯一文件名,并调整php.ini限制以确保上传成功。 如果您尝试在PHP项目中添加图片上传功能,但服务器无法正确接收或保存文件,则可能是由于表单配置、文件处理逻辑或安全限制的问题。以下是实现该功能…

    2026年5月10日
    100
  • MySQL数据库不支持中文的解决办法

    接上一篇文章,在解决了mysql+flask环境配置问题之后,往数据库存中文字符串会报1366错误,提示不正确的字符。继而发现默认的mysql采用了latin1字符集,这种编码是不支持中文的。 如果想支持中文的话,需要设置一下mysql字符集。 众所周知utf-8是可以的,gbk也没问题,为了可扩展…

    用户投稿 2026年5月10日
    000
  • 一台服务器上如何同时运行多个UWSGI服务避免冲突?

    多UWSGI服务部署方案:利用Docker实现服务器资源隔离 本文探讨如何在单台服务器上安全运行多个UWSGI服务,避免服务冲突。 问题在于,即使端口不同,两个UWSGI服务(例如:san和san_test)也可能发生冲突,后启动的服务覆盖之前的服务。 理想情况下,san_test应该持续运行,而s…

    2026年5月10日
    000
  • 我有时使用 awk 而不是 Python 的四个原因

    Python 是一门强大的编程语言,但在某些特定场景下,Awk 的优势更为显著,尤其体现在可移植性、生命周期、代码简洁性和与其他工具的互操作性方面。 Python 脚本通常具有良好的可移植性,但并非总能在所有环境中完美运行,例如流行的 Docker 基础镜像 (如 Debian 和 Alpine)。…

    2026年5月10日
    000
  • Go语言连接外部MySQL数据库:DSN配置与常见错误解析

    本文详细阐述了go语言使用`go-sql-driver/mysql`驱动连接外部mysql数据库的正确方法。重点介绍了数据源名称(dsn)的规范格式,特别是主机地址部分的配置,以避免常见的“getaddrinfow: the specified class was not found.”等网络解析错…

    2026年5月10日
    000
  • php超过字数怎么解密_用PHP分段处理超字数加密数据并解密教程【技巧】

    分段解密超长加密数据需先确定算法限制,再通过OpenSSL扩展支持,编写函数逐段解密并拼接结果。1、明确加密算法与密钥对应的分段大小;2、启用php.ini中openssl扩展并重启服务;3、自定义函数读取私钥、base64解码密文、循环截取块解密;4、确保去除密文换行符并按原加密块大小切分;5、解…

    2026年5月10日
    000
  • PHP代码注入检测日志分析_PHP代码注入日志检测方法详解

    答案:日志分析是发现PHP代码注入的关键手段,主要通过Web服务器访问日志、PHP错误日志、PHP-FPM日志及应用自定义日志等多源数据,结合grep、ELK、WAF等工具识别含eval()、system()、Base64编码、目录遍历等特征的异常请求,并建立基线、设置检测规则与自动化告警,配合事件…

    2026年5月10日
    000
  • 后缀php怎么打开_php文件打开方式与运行环境搭建指南

    要打开PHP文件需根据用途选择方式:查看代码可用文本编辑器或IDE,运行则需服务器环境。推荐新手使用XAMPP、WAMP等集成环境,将文件放入htdocs目录后访问localhost;开发者可利用PHP内置服务器,命令行执行php -S localhost:8000运行;高级用户可手动配置Apach…

    2026年5月10日
    000
  • php源码怎么运行手机_php源码手机运行环境搭建步骤【教程】

    可在手机上通过特定工具运行PHP源码。首先选择支持PHP的移动应用,安卓用户可安装UserLAnd或KSWEB,iOS用户可尝试iSH Shell或a-Shell;然后配置本地服务器环境,启动HTTP和PHP服务,将PHP文件放入指定根目录;接着可通过Termux搭建完整开发环境,更新包列表并安装P…

    2026年5月10日
    200
  • PHP动态网页数据库备份恢复_PHP动态网页MySQL数据库备份教程

    答案:PHP动态网页的MySQL数据库备份与恢复需通过定期导出SQL文件并安全存储来保障数据安全,核心方法包括使用mysqldump命令行工具实现高效灵活的自动化备份,利用phpMyAdmin图形化工具进行手动导出导入以降低操作门槛,以及通过PHP脚本调用系统命令将备份过程集成到应用中;恢复时可采用…

    2026年5月10日
    000
  • C++云计算最佳实践:部署、管理和伸缩性考虑因素

    为了实现 c++++ 云应用程序的有效部署,最佳实践包括:容器化部署,使用 docker 等容器。采用 ci/cd,自动化发布过程。使用版本控制,管理代码更改。实施日志记录和监控,跟踪应用程序运行状况。使用自动扩展,优化资源利用率。利用云管理服务,管理应用程序基础设施。采用水平伸缩和垂直伸缩,根据需…

    2026年5月10日
    000
  • php登录怎么实现_php用户登录系统完整实现

    <blockquote>PHP用户登录系统的核心是安全验证与会话管理。首先创建POST提交的登录表单,避免敏感信息暴露;后端通过session_start()启动会话,使用trim()和htmlspecialchars()清理输入,防止XSS攻击;利用PDO预处理语句查询数据库,防止SQ…

    用户投稿 2026年5月10日
    000
  • PHP处理大型文本文件转JSON:内存溢出诊断与优化实践

    本文深入探讨了PHP在将大型文本文件转换为结构化JSON时可能遇到的内存溢出问题。文章详细指导读者如何通过phpinfo()诊断并正确配置PHP的memory_limit,包括检查php.ini和.htaccess的潜在冲突,并提供了逐步增加内存限制的建议。同时,文章也分析了特定数据格式下内存消耗的…

    2026年5月10日
    100
  • 远程MySQL数据库连接指南:从本地PHP应用访问GCP实例数据库

    本文详细指导如何在本地php应用中连接到google cloud platform (gcp) 虚拟机实例上的远程mysql数据库。教程涵盖了数据库连接参数的配置、使用php pdo建立连接的方法、gcp环境下的网络配置要点,以及常见的安全和故障排除建议,旨在帮助开发者顺利实现跨环境的数据库通信。 …

    2026年5月10日
    000
  • Nginx 子目录应用URI重写与参数传递教程

    本教程详细阐述了如何在Nginx中为PHP应用实现子目录URI重写,特别是如何从请求URI中剥离子目录路径并将其余部分作为参数传递给主入口文件。通过try_files和rewrite指令的组合,本教程提供了一种高效且准确的解决方案,以替代Apache .htaccess的RewriteRule功能,…

    2026年5月10日
    000
  • 理解PHP服务器端请求与浏览器开发者工具的限制

    当PHP脚本使用file_get_contents等函数发起服务器端请求时,这些请求直接在服务器上执行,而非通过浏览器。因此,浏览器开发者工具的网络活动面板无法捕获和显示这些内部的服务器间通信,因为它仅监控浏览器自身发出的网络请求,对服务器内部处理过程无感知。 客户端请求与服务器端请求的本质区别 在…

    2026年5月10日
    100
  • 在PHP中实现MySQL数据插入时避免重复记录的策略

    本文将探讨在php应用中向mysql数据库插入数据时,如何有效避免重复记录的产生。针对当主键或唯一索引字段值已存在的情况,我们将介绍使用`insert ignore`语句的策略,以确保数据完整性并防止不必要的重复插入,从而简化数据管理逻辑。 引言:数据完整性与重复记录问题 在数据库管理中,数据完整性…

    2026年5月10日
    000
  • php文件怎么在服务器运行_php文件上传服务器后运行的配置方法

    首先确认服务器已安装PHP环境并正确配置Web服务器支持PHP,将文件放入指定Web目录并设置权限,通过测试页面验证执行,同时确保上传方式与编码格式无误。 如果您已经将PHP文件上传至服务器,但无法正常执行,可能是由于服务器环境未正确配置或缺少必要的服务支持。以下是使PHP文件在服务器上成功运行的详…

    2026年5月10日
    000
  • php实现哪些功能

    PHP是一种通用脚本语言,可用来实现广泛的功能,包括:动态Web开发:生成响应用户请求的动态 веб页面。内容管理系统(CMS):构建允许用户管理网站内容的CMS。电子商务:开发具有购物车、订单处理和支付网关集成的电子商务网站。服务器端编程:编写命令行脚本和工具。文件操作:创建、读取、写入和删除文件…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信