[参考博客]((257条消息) Docker+Nginx部署前后端分离项目(SpringBoot+Vue)的详细教程_在docker中安装nginx实现前后端分离_这里是杨杨吖的博客-CSDN博客)
(Docker+Nginx部署前后端分离项目(SpringBoot+Vue))
安装docker
# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
# 查看自带的docker compose版本
docker compose version
服务器设置
开放端口
前端
修改请求路径
build
生成dist目录
后端
创建Dockerfile文件
#依赖jdk8环境
FROM openjdk:8
#对外暴露后端端口
EXPOSE 8880
#复制server-1.0-SNAPSHOT到docker容器中并命名为app.jar
ADD back_endpoint-0.0.1-SNAPSHOT.jar /app.jar
#执行命令
# RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]
设置生产环境
application.yml
application-pro.yml
记得修改mongodb数据库地址
新建docker-compose.yml
version: "3"
services:
nginx: # 服务名称,用户自定义
image: nginx:latest # 镜像版本
ports:
- 80:80 # 暴露端口
- 8991:8991
restart: always
volumes: # 挂载
- /root/nginx/html:/usr/share/nginx/html
- /root/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
mongodb:
image: mongo:5.0.10-focal
ports:
- 27017:27017
restart: always
command:
- "--auth"
environment://登入mongodb的用户名和密码
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: "Rootroot123"
wiredTigerCacheSizeGB: 2
volumes:
- "/root/mongo/data:/data/db"
- "/root/mongo/logs:/var/log/mongodb"
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime"
server: #后端服务名称,注意要和下面的image保持一致=========
image: server:latest
restart: always
build: . # 表示以当前目录下的Dockerfile开始构建镜像
ports:
- 8880:8880
depends_on: # 依赖与mongodb,其实可以不填,默认已经表示可以
- mongodb
因为数据库在容器中,所以地址使用
容器名
即可
打包 package
pom.xml
注意需要跳过测试
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.7</version>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skipTests>true</skipTests> <!--默认关掉单元测试 -->
</configuration>
</plugin>
</plugins>
</build>
打包
结果
部署
前端
创建如下目录 并且上传nginx.conf
将前端dist目录下的内容拷贝到html中
后端
上传jar包及文件
启动容器编排命令
docker compose up -d
mongoDB权限问题
进入容器
docker exec -it java_project-mongodb-1 bash
# 进入mongo shell
mongo
在开始导入数据库前,需要创建好操作数据库的用户
db.auth("admin","Rootroot123")
db.createUser({user:"userdata_admin",pwd:"Rootroot123",roles:[{role:"dbOwner",db: "userdata"}]})
SparingBoot配置文件
导入数据
",“Rootroot123”)
db.createUser({user:“userdata_admin”,pwd:“Rootroot123”,roles:[{role:“dbOwner”,db: “userdata”}]})
[外链图片转存中...(img-zukD0KIo-1696144009330)]
> SparingBoot配置文件
[外链图片转存中...(img-Lew7pIGo-1696144009331)]
> 导入数据
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fgitee.com%2Fjakenxie%2Fnote_img%2Fraw%2Fmaster%2Fimg%2Fimage-20230513141911829.png&pos_id=img-NIKCrFeP-1696144009331)