Docker部署前后端分离项目(Docker+Nginx+Vue+SpringBoot)

一、简介

使用Docker+Docker-Compose部署前后端分离的项目

二、安装软件

已经安装可以跳过步骤。

安装 docker

安装docker步骤

安装 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

给权限

sudo chmod +x /usr/local/bin/docker-compose

查看版本

docker-compose --version

安装 mysql

拉取mysql镜像

docker pull mysql:5.7

启动mysql

docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7

在本机连接到 docker 内的mysql (然后创建自己项目的数据库)
在这里插入图片描述

安装 nginx

拉取 nginx

docker pull nginx

三、打包前后端项目

需要注意打包的时候,要修改对应的转发到后端的ip
在这里插入图片描述

1.打包前端文件 运行后会有一个dist得文件夹(这就是打包得前端项目)

npm run build

在这里插入图片描述
2.后端打包 将maven的test禁用 (选择test,点闪电)
后端打包需要注意,mysql的连接配置需要修改为服务器的ip端口和密码
在这里插入图片描述
运行命令进行打包

mvn clean package

在这里插入图片描述
打包完成后会在 taget 目录生成一个 jar 包(要确保 jar 包是可以运行的!)
在这里插入图片描述

四、编写文件

在服务器内创建文件夹(随便一个位置)我是在根目录创建得

#到根目录
cd /
#创建文件夹
sudo mkdir lbs
#进入文件夹内
cd lbs
#创建nginx和html文件夹
mkdir -p nginx/html

将前端打包生成的 dist 文件夹内的全部文件复制到 创建的 html 文件夹内

在这里插入图片描述

将后端打包生成的 jar 包放到 lbs 目录下

在这里插入图片描述

新建文件 Dockerfile 文件

vim Dockerfile

Dockerfile 文件内容

#使用java 8 版本
FROM java:8
COPY dormitoryadmin.jar /dormitoryadmin.jar
CMD ["--server.port=8999"]
#对外暴露的端口
EXPOSE 8999
ENTRYPOINT ["java", "-jar", "/dormitoryadmin.jar"]

这两个路径要对上
在这里插入f描述

新建文件 docker-compose.yml

vim docker-compose.yml

docker-compose.yml 的内容

version: "3"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    ports:
           - 8083:8083  # 前端项目暴露的端口
    volumes: # 挂载 
    	# html和nginx.conf 挂载
      - /lbs/nginx/html:/usr/share/nginx/html
      - /lbs/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  dormitoryadmin:
    image: dormitory:latest
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    ports:
      - 8999:8999 #后端项目暴露的端口
    privileged: true

添加 nginx.conf 文件
docker-compose.yml 内已经挂载了,写了之后,创建nginx 容器会自动同步容器内的 nginx.conf 文件

在这里插入图片描述

创建 nginx.conf 文件

vim nginx/nginx.conf

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;
    server {
        listen       8083;
        server_name  localhost;
        location / {
            root   /usr/share/nginx/html;
            # nginx 报404需要加下面这行
            try_files $uri $uri/ /index.html last; 
            index  index.html index.htm;
            #nginx 报405加下面这行
            #error_page 405 =200 http://$host$request_uri;
        }
        #nginx 报 连接错误 、没有数据(We’re sorry but “XXX” doesn’t work...放开下面的注释(我是这个问题,如果不行可以试试方法二)
        #location ^~ /api/ {
            #proxy_pass http://114.0.0.0:8999/;
        #}
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

在这里插入图片描述

补充:nginx 报 We’re sorry but “XXX” doesn’t work properly without JavaScript enabled. Please enable it to continue
解决办法二:将前端项目路由里面的mode的history改成hash(没有问题则不用理)在这里插入图片描述
最后的目录结构是这样的
lbs目录(jar包 + Dockerfile + docker-compose.yml需要在同一目录下)
在这里插入图片描述

运行 docker-compose.yml 文件的内容,他会自动帮我们构建 nginx容器 项目

docker-compose up -d

查看容器

docker ps -a

在这里插入图片描述

五、运行效果

输入前端项目的ip+端口号
在这里插入图片描述
登录,成功跳转。
在这里插入图片描述

参考博客:
部署:https://www.cnblogs.com/iandf/p/14737958.html
问题解决:https://blog.csdn.net/qq_40915333/article/details/121761092

  • 9
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
运维项目经验是很宝贵的,以下是基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验: 1. Nginx Nginx是一款高性能的Web服务器和反向代理服务器。在运维过程中,需要对Nginx进行配置和监控,以确保其运行稳定。 - 配置 Nginx配置文件的路径为"/etc/nginx/nginx.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - worker_processes:指定工作进程数,一般根据CPU核心数进行设置。 - pid:指定进程ID的存储路径。 - error_log:指定错误日志的存储路径。 - access_log:指定访问日志的存储路径。 - http:指定HTTP协议的配置项,如代理服务器、缓存等。 - server:指定服务器的配置项,如监听端口、域名等。 - 监控 可以使用Nginx自带的状态模块,通过访问"http://localhost:8080/nginx_status"来获取Nginx的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 2. Nacos Nacos是一款开源的服务发现、配置管理和动态DNS解析系统。在运维过程中,需要对Nacos进行部署配置,以确保其正常运行。 - 部署 Nacos的部署可以使用Docker、Kubernetes等容器化技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:Nacos默认使用8848端口。 - 数据库配置:Nacos需要使用MySQL或者MariaDB作为数据存储的后端,需要进行相关的数据库配置。 - 配置文件的修改:Nacos的配置文件位于conf目录下,可以根据实际情况进行修改。 - 配置 在Nacos中,需要进行以下配置: - 服务注册:通过Nacos的API,将需要注册的服务注册到Nacos中。 - 配置管理:将需要管理的配置文件上传到Nacos中,并设置相应的命名空间、数据ID和分组。 3. MySQL MySQL是一款流行的关系型数据库管理系统。在运维过程中,需要对MySQL进行配置和监控,以确保其运行稳定。 - 配置 MySQL的配置文件的路径为"/etc/my.cnf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - port:指定MySQL的监听端口。 - bind-address:指定MySQL的监听地址。 - max_connections:指定MySQL的最大连接数。 - log-error:指定错误日志的存储路径。 - slow-query-log:指定慢查询日志的存储路径。 - 监控 可以使用MySQL自带的状态变量和性能指标,通过执行"SHOW STATUS"和"SHOW VARIABLES"语句来获取MySQL的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 4. Redis Redis是一款高性能的内存数据库。在运维过程中,需要对Redis进行配置和监控,以确保其运行稳定。 - 配置 Redis配置文件的路径为"/etc/redis/redis.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - bind:指定Redis的监听地址。 - port:指定Redis的监听端口。 - daemonize:指定Redis是否以守护进程的方式运行。 - logfile:指定Redis的日志文件路径。 - maxclients:指定Redis的最大连接数。 - 监控 可以使用Redis自带的命令,如"INFO",来获取Redis的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 5. RabbitMQ RabbitMQ是一款开源的消息队列系统。在运维过程中,需要对RabbitMQ进行部署配置,以确保其正常运行。 - 部署 RabbitMQ的部署可以使用Docker、Kubernetes等容器化技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:RabbitMQ默认使用5672端口。 - 用户名和密码:在RabbitMQ中,需要使用用户名和密码进行身份验证,需要进行相应的用户配置。 - 配置 在RabbitMQ中,需要进行以下配置: - 队列的创建:通过RabbitMQ的API,创建需要使用的队列。 - 交换机的创建:通过RabbitMQ的API,创建需要使用的交换机。 - 路由键的绑定:通过RabbitMQ的API,将队列和交换机进行绑定,并指定相应的路由键。 总体来说,基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验需要对以上组件进行深入理解和熟练掌握,才能更好地进行运维管理。在实践中,需要不断积累经验和总结,以便能够更好地应对各种问题和挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值