代码编织梦想

唠嗑部分

上篇文章我们说了SpringBoot项目的部署(伪前后端不分离)

首先解释一下,我们准备的案例实际是前后端分离的,将前端代码打在jar中来当做前后端不分离,实际也是一样,所以上述用了伪

今天我们来说一说如何部署SpringBoot+前后端分离项目,本来打算呢使用Vue脚手架做一个案例,但是太浪费时间了,所以就复用了上次的,本质是一样的,其实上次的前端也是vue,只不过没有工程化

那下面我们就来说说如何部署

言归正传

再说本篇之前,我先做一下忏悔,上篇文章的docker-compose.yml缺了两行(java项目没有暴露端口,会无法访问),我在centos调试后没有及时更新,正确的如下

version: '3.1'
services:
  mysql:
    image: mysql:5.7
    container_name: cxs.mysql.com
    environment:
      - MYSQL_ROOT_PASSWORD=root
    volumes:
      - /home/mysql/sql/:/usr/local/sql/
      - /home/mysql/etc/:/etc/mysql/conf.d/
    networks:
      - cxs-app
  java-app:
    build:
      context: ./
      dockerfile: Dockerfile
    image: book-manager-sys:1.0
    container_name: java-app
    command: "--server.port=2023"
    ports:
      - "2023:2023"
    depends_on:
      - mysql
    volumes:
      - /etc/localtime:/etc/localtime:ro
    networks:
      - cxs-app
networks:
  cxs-app:

本次案例还是使用上次的

image-20230314104309849

1、使用maven对项目进行打包

我直接吧项目中的前端文件提出来,就不打开idea了哈,直接在控制台打包了

项目目录下打开cmd,执行如下命令进行打包(注意:需要提前配置好maven环境变量)

mvn clean package -DskipTests

image-20230316163203835

2、编写Dockerfile文件(同上篇文章)

FROM 基于镜像java:8

ADD 复制命令,复制当前目录下的*.jar到java/app.jar

EXPOSE 声明暴露的端口

WORKDIR 声明工作目录

RUN 运行脚本

ENTRYPOINT 执行命令,不可覆盖

CMD 执行命令,可覆盖

FROM java:8
ADD *.jar java/app.jar
EXPOSE 2023
WORKDIR java
RUN echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=prod"]
CMD ["--server.port"]

3、编写docker-compose.yml文件

下面的主要解释一下,常见的见文章:

networks 声明网络,处在同一网络下的服务可使用容器名通讯

depends_on 优先级,即mysql先启动。在启动java-app

version: '3.1'
services:
  mysql:
    image: mysql:5.7
    container_name: cxs.mysql.com
    environment:
      - MYSQL_ROOT_PASSWORD=root
    volumes:
      - /home/mysql/sql/:/usr/local/sql/
      - /home/mysql/etc/:/etc/mysql/conf.d/
    networks:
      - cxs-app
  java-app:
    build:
      context: ./
      dockerfile: Dockerfile
    image: book-manager-sys:1.0
    container_name: java-app
    command: "--server.port=2023"
    depends_on:
      - mysql
    volumes:
      - /etc/localtime:/etc/localtime:ro
    networks:
      - cxs-app
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "80:80"
    depends_on:
      - java-app
    volumes:
      - /home/java20230315/nginx/conf/:/etc/nginx/conf.d/
      - /home/java20230315/nginx/html/:/usr/share/nginx/html/
    networks:
      - cxs-app
networks:
  cxs-app:

4、创建目录及目录说明

创建/home/java20230315/nginx/conf/、/home/java20230315/nginx/html/目录

  • /home/java20230315/nginx/conf/ nginx配置文件挂载目录
  • /home/java20230315/nginx/html/ nginx前端静态文件挂载目录

5、上传jar包、前端代码、init.sql、Dockerfile、docker-compose.yml

init.sql的使用方式同上篇文章,请参考一下,本次不做太多说明:

将jar包、Dockerfile、docker-compose.yml上传至/home/java20230315目录下,结构如下

image-20230316164639320

将view中的文件上传至/home/java20230315/nginx/html/目录下,结构如下

image-20230316164412872

在/home/java20230315目录下执行命令

docker-compose up -d --build

出现下图即可,然后进行下一步

image-20230316165027828

查看容器运行状态是否正常

docker-compose ps

image-20230316165047411

进入mysql容器,执行初始化脚本步骤同上次

访问页面,我的虚拟机ip是10.10.10.10:http://10.10.10.10,这次访问也不一样哈,请注意哦

image-20230316170012303

大功告成,鼓掌

结语

1、关于两种常用的项目部署方式就结束了,servlet的就不说了

2、总体来说,还是比较复杂的,对于docker的功底要求也比较高

3、后面我们会说jenkins流水线,会简单很多哈哈

4、案例获取请回复:java20230316

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/admin_2022/article/details/129625101

Docker+Docker-compose部署Springboot项目-前后端分离-爱代码爱编程

保姆式教程,话不多说直接上内容! 首先需要的是服务器或者是虚拟机,我这边是ubuntu系统。 一、安装docker 为了有权限进行操作先执行 :  sudo su   之后输入登录密码即可进入到root用户 安装命令:         apt-get install -y docker.io  或者 yum install docker 查看安

Docker-Compose + Nginx 部署前后端分离项目-爱代码爱编程

Docker-Compose + Nginx 部署前后端分离项目 项目是采用Vue +Springboot 的前后端分离项目 一、预处理 1、项目打包前,先去File–>Setting–> File Encoding 中 改为UTF-8,防止乱码错误! 注意:此时如果修改为UTF8后我们的properties配置文件中文乱

docker-compose部署java前后端分离项目-爱代码爱编程

脚本安装(有点low,狗头报名) #!/bin/bash echo -e "\e[35m 输入1自定义安装,2默认docker-ce-18.06.1.ce-3.el7安装 \e[0m" read -p " 请输入1,2: " select_docker_version if [ $select_docker_version == 1 ]; then

jenkins通过docker-compose部署springboot项目配置-爱代码爱编程

接Dockerfile部署文章,有多种部署方式,我这只是整理一个简单的思路,Dockerfile文件用于mvn打包并上传到harbor仓库,docker-compose用于快速的部署项目,缩短部署步骤 一、针对代码部分的修改 1、修改mvn的settings.xml文件,ID会被代码下的pom.xml调用 vim /usr/share/mav

使用docker-compose部署springboot项目-爱代码爱编程

1、创建Dockerfile文件 FROM java:8 # 使用国内清华软件源 RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \ sed -i 's/security.debian.org/mirrors

学习笔记-架构的演进之容器编排-3月day08-爱代码爱编程

文章目录 前言容器编排过程会遇到的问题Pod总结附 前言 自从 Docker 提出“以封装应用为中心”的容器发展理念,成功取代了“以封装系统为中心”的 LXC 以后,一个容器封装一个单进程应用,已经成为了被广