请提前安装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项目并命名为配置中的服务名
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 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项目的详细内容。更多信息请关注PHP中文网其他相关文章!

docker中rm和rmi的区别:rm命令用于删除一个或者多个容器,而rmi命令用于删除一个或者多个镜像;rm命令的语法为“docker rm [OPTIONS] CONTAINER [CONTAINER...]”,rmi命令的语法为“docker rmi [OPTIONS] IMAGE [IMAGE...]”。

docker官方镜像有:1、nginx,一个高性能的HTTP和反向代理服务;2、alpine,一个面向安全应用的轻量级Linux发行版;3、busybox,一个集成了三百多个常用Linux命令和工具的软件;4、ubuntu;5、PHP等等。

docker容器重启后数据会丢失的;但是可以利用volume或者“data container”来实现数据持久化,在容器关闭之后可以利用“-v”或者“–volumes-from”重新使用以前的数据,docker也可挂载宿主机磁盘目录,用来永久存储数据。

docker对于小型企业、个人、教育和非商业开源项目来说是免费的;2021年8月31日,docker宣布“Docker Desktop”将转变“Docker Personal”,将只免费提供给小型企业、个人、教育和非商业开源项目使用,对于其他用例则需要付费订阅。

docker能安装oracle。安装方法:1、拉取Oracle官方镜像,可以利用“docker images”查看镜像;2、启动容器后利用“docker exec -it oracle11g bash”进入容器,并且编辑环境变量;3、利用“sqlplus /nolog”进入oracle命令行即可。

解决方法:1、停止docker服务后,利用“rsync -avz /var/lib/docker 大磁盘目录/docker/lib/”将docker迁移到大容量磁盘中;2、编辑“/etc/docker/daemon.json”添加指定参数,将docker的目录迁移绑定;3、重载和重启docker服务即可。

容器管理ui工具有:1、Portainer,是一个轻量级的基于Web的Docker管理GUI;2、Kitematic,是一个GUI工具,可以更快速、更简单的运行容器;3、LazyDocker,基于终端的一个可视化查询工具;4、DockStation,一款桌面应用程序;5、Docker Desktop,能为Docker设置资源限制,比如内存,CPU,磁盘镜像大小;6、Docui。

有类似docker的软件:1、Podman,是一个无守护程序的开源Linux原生容器引擎;2、LXD,是一个专为LXC Linux容器设计的开源容器引擎;3、Buildah,是是红帽为容器化系统开发的一个OCI镜像构建工具;4、RunC等。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境