• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    服务器设置

    开放端口

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    前端

    修改请求路径

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    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"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    设置生产环境

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    打包 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    打包

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    结果

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    部署

    前端

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

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    后端

    上传jar包及文件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    启动容器编排命令

    docker compose up -d
    
    • 1

    mongoDB权限问题

    进入容器

    docker exec -it java_project-mongodb-1 bash
    
    • 1
    # 进入mongo shell
    mongo
    
    • 1
    • 2

    在开始导入数据库前,需要创建好操作数据库的用户

    db.auth("admin","Rootroot123")
    
    
    db.createUser({user:"userdata_admin",pwd:"Rootroot123",roles:[{role:"dbOwner",db: "userdata"}]})
    
    • 1
    • 2
    • 3
    • 4

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    Windows 10, version 22H2 (released Oct 2022) 简体中文版、英文版下载
    OCR:C++ PaddleOCR C++ PaddleOCR vs2019 (CPU版)保姆教程
    图扑智慧电力可视化大屏,赋能虚拟电厂精准减碳
    Qt扫盲-QJsonObject理论总结
    24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、142.环形链表II
    Java 各种工具类的使用方法
    C++:类的封装
    RustDay06------Exercise[91-100]
    【深度学习】图像分割概述
    Spring Cloud Alibaba-实现服务调用的负载均衡
  • 原文地址:https://blog.csdn.net/jaken_xie/article/details/133465341