26 docker前后端部署

[参考博客]((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

服务器设置

开放端口

26 docker前后端部署_第1张图片

前端

修改请求路径

26 docker前后端部署_第2张图片

build

26 docker前后端部署_第3张图片

生成dist目录

26 docker前后端部署_第4张图片

后端

创建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"]

26 docker前后端部署_第5张图片

设置生产环境

application.yml

26 docker前后端部署_第6张图片

application-pro.yml

记得修改mongodb数据库地址

26 docker前后端部署_第7张图片

新建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

26 docker前后端部署_第8张图片

因为数据库在容器中,所以地址使用容器名即可

26 docker前后端部署_第9张图片

打包 package

pom.xml

注意需要跳过测试

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
            <version>2.7.7version>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombokgroupId>
                        <artifactId>lombokartifactId>
                    exclude>
                excludes>
            configuration>
        plugin>
        <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-surefire-pluginartifactId>
            <version>2.19.1version>
            <configuration>
                <skipTests>trueskipTests> 
            configuration>
        plugin>
    plugins>
build>

打包

26 docker前后端部署_第10张图片

结果

26 docker前后端部署_第11张图片

部署

前端

创建如下目录 并且上传nginx.conf

26 docker前后端部署_第12张图片

将前端dist目录下的内容拷贝到html中

26 docker前后端部署_第13张图片

后端

上传jar包及文件

26 docker前后端部署_第14张图片

启动容器编排命令

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"}]})

26 docker前后端部署_第15张图片

SparingBoot配置文件

26 docker前后端部署_第16张图片

导入数据

",“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)

你可能感兴趣的:(docker,容器,运维)