【docker】docker-compose实战之SpringBoot项目构建与部署

唠嗑部分

之前我们说了docker-compose的安装使用及一些常用软件的安装哈,相关文章:
【docker】docker-compose实战之MySQL安装与配置
【docker】docker-compose实战之Redis的安装与配置

今天我们来说一说如何部署SpringBoot项目,主要是说一说流程,总体而言这个流程是比较复杂的。

后期也会出一个前后端分离项目的部署,像React、Vue项目如何部署哈,还是有含金量的。

这两期文章的安排呢实际是为了出后面的CICD流水线配置,两者形成一个鲜明的对比

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

言归正传

小白首先准备了一个demo,样式随便写了点,凑合看吧,毕竟这不是重点

image-20230314104309849

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

image-20230314104615767

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
networks:
  cxs-app:

4、上传jar包、init.sql、Dockerfile、docker-compose.yml

image-20230314164848014

在home目录下创建mysql/etc,mysql/sql目录,将init.sql放于mysql/sql下

在mysql/etc创建配置文件mysql.cnf,内容如下

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

结构如下,安装mysql之前的文章说过,就不详细说明了

image-20230314165123302

在/home/java-app目录下执行命令

docker-compose up -d --build

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

image-20230314165312414

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

docker-compose ps

image-20230314165853706

进入mysql容器,执行初始化脚本

docker exec -it cxs.mysql.com bash

执行如下命令

mysql -uroot -proot < /usr/local/sql/init.sql

image-20230314165745264

退出来,Ctrl+p+q

访问页面,我的虚拟机ip是10.10.10.10:http://10.10.10.10:2023/index.html

image-20230314165956954

大功告成,鼓掌

结语

1、资料获取,jar包及初始化sql文件会放置于公众号后台,关注全栈小白公众号,回复关键字获取:java20230314

2、下期预告,前后端分离项目部署

3、您的点赞支持是我最大的动力,抱拳了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker ComposeDocker 官方编排(Orchestration)项目之一,负责快速部署分布式应用。通过 Docker Compose,我们可以定义和运行多个 Docker 容器,并通过一个 YAML 文件来配置需要的服务。 下面是使用 Docker Compose 部署 Spring Boot 项目的简单步骤: 1. 编写 Dockerfile 在 Spring Boot 项目的根目录下创建一个名为 Dockerfile 的文件,并添加以下内容: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ADD ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 2. 编写 docker-compose.yml 文件 在 Spring Boot 项目的根目录下创建一个名为 docker-compose.yml 的文件,并添加以下内容: ``` version: '3' services: app: image: your-image-name build: context: . dockerfile: Dockerfile ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=prod restart: always ``` 其中,your-image-name 是自定义的镜像名称,需要在构建镜像时使用。 3. 构建镜像 在 Spring Boot 项目的根目录下执行以下命令,构建镜像: ``` docker build -t your-image-name . ``` 4. 启动容器 在 Spring Boot 项目的根目录下执行以下命令,启动容器: ``` docker-compose up -d ``` 5. 查看容器状态 执行以下命令查看容器状态: ``` docker-compose ps ``` 至此,你已经成功使用 Docker Compose 部署了 Spring Boot 项目。如果需要停止容器,可以执行以下命令: ``` docker-compose stop ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小白.

感谢老板,祝老板今年发大财!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值