idea整合docker快速部署springboot应用的详细过程

下面是整合docker快速部署springboot应用的详细攻略。

准备工作

在开始之前,确保你已经安装好了以下软件或工具:

步骤一:创建Spring Boot应用

首先,我们需要创建一个Spring Boot应用程序。这里提供一个快速创建Spring Boot应用程序的方法:

  1. 打开 start.spring.io 网站,选择你想用的项目配置,例如 Maven/Gradle、Java版本、Spring Boot版本等等。

  2. 在 Dependencies 区域选择需要的依赖,这里我们至少需要选择 Spring WebSpring Data JPA ,这样我们就能够 create, read, update 和 delete (CRUD)数据,同时我们为了方便而选择集成 Swagger。

  3. 点击 Generate 按钮,会自动下载一个.zip 文件。解压它到你的电脑上,然后用你喜欢的 IDE 打开解压后的文件夹。

  4. 在 IDE 中运行项目,确认你的 Spring Boot 应用已经启动,并且能够访问 http://localhost:8080/swagger-ui.html 。

步骤二:修改 Dockerfile

  1. 在根目录下创建一个名为 Dockerfile 的文件。然后在文件中使用以下内容替换掉默认内容:
# 指定运行时的镜像,这里我们使用了官方的 openjdk 镜像
FROM openjdk:11-jre-slim

# 指定 Spring Boot 应用程序 jar 文件的路径
ARG JAR_FILE=target/*.jar

# 将 jar 文件添加到容器中
ADD ${JAR_FILE} app.jar

# 暴露 8080 端口让容器外部可以访问
EXPOSE 8080

# 指定容器启动时运行的命令
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 可以根据需要添加更多的 Docker 构建指令,以安装所需的操作系统软件包,配置环境变量、复制配置文件等。

步骤三:构建Docker镜像

构建 Docker 镜像时,我们需要在应用程序 jar 文件所在的目录中运行以下命令:

docker build -t <镜像名称:tag> .

<镜像名称:tag>表示 Docker 镜像的名称和版本号,可以根据需要改变。

步骤四:运行Docker容器

运行 Docker 镜像后,我们需要在容器内运行应用程序并将容器的 8080 端口映射到主机上的其他端口。运行以下命令:

docker run -p <主机端口>:8080 <镜像名称>

<主机端口>表示主机上用于访问应用程序的端口号,可以根据需要改变。

示例一:实现mysql数据库的快速docker部署

接下来我们执行上述的步骤,并添加一个示例说明,假设我们要创建一个使用MySQL数据库的Spring Boot应用。我们需要在Docker容器中安装MySQL镜像,然后将Spring Boot应用连接到这个镜像。以下是实现步骤:

  1. 在 Docker compose 文件中添加以下配置:
version: "3"

services:
  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=testdb
      - MYSQL_USER=testuser
      - MYSQL_PASSWORD=testpass
    ports:
      - "3306:3306"
  app:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/testdb?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
      - SPRING_DATASOURCE_USERNAME=testuser
      - SPRING_DATASOURCE_PASSWORD=testpass

这个文件包含了两个服务:dbappdb服务安装了mysql镜像,并且告诉容器使用一个root用户密码为"secret"的数据库,然后将本地端口3306映射到容器中的3306端口。

  1. 创建一个名为 docker-compose.yml 的文件,并将上述内容放入其中。然后运行以下命令启动容器:
docker-compose up

执行结束后,你的Spring Boot应用就可以连接到MySQL容器中,并使用数据库名称为 testdb、用户名为 testuser、密码为 testpass 的数据库。

示例二:一个包含定时任务的Spring Boot应用的快速docker部署

以下是在 Docker 容器中部署使用 Spring Quartz 定时任务(scheduler)的 Spring Boot 应用程序的步骤:

  1. 将以下依赖项添加到 pom.xml 文件中:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
  1. 在 Spring Boot 应用程序中创建一个 Quartz 定时任务:
@Component
public class QuartzJobScheduler {

    @Scheduled(fixedDelay = 1000)
    public void schedule() {
        System.out.println("Hello world!");
    }

}

定时任务是一个简单的示例,它仅在控制台中每秒打印一次“Hello world!”消息。实际上,你需要编写一个更复杂的定时任务类来满足你的特定需求。

  1. 修改 Dockerfile 内容:
# 指定运行时的镜像,这里我们使用了官方的 openjdk 镜像
FROM openjdk:11-jre-slim

# 指定 Spring Boot 应用程序 jar 文件的路径
ARG JAR_FILE=target/*.jar

# 添加 Quartz properties
COPY quartz.properties /quartz.properties

# 将 jar 文件添加到容器中
ADD ${JAR_FILE} app.jar

# 暴露 8080 端口让容器外部可以访问
EXPOSE 8080

# 指定容器启动时运行的命令
ENTRYPOINT ["java","-jar","/app.jar","--spring.config.location=/quartz.properties"]
  1. 创建一个名为 quartz.properties 的文件,添加以下内容:
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.quartz.properties.org.quartz.scheduler.instanceName=myScheduler
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
spring.quartz.properties.org.quartz.jobStore.dataSource=myDataSource
spring.quartz.properties.org.quartz.dataSource.myDataSource.connectionProvider.class=org.quartz.impl.jdbcjobstore.C3p0ConnectionProvider
spring.quartz.properties.org.quartz.dataSource.myDataSource.driver=com.mysql.jdbc.Driver
spring.quartz.properties.org.quartz.dataSource.myDataSource.URL=jdbc:mysql://db:3306/testdb?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8
spring.quartz.properties.org.quartz.dataSource.myDataSource.user=root
spring.quartz.properties.org.quartz.dataSource.myDataSource.password=secret
 ```

这个文件定义了 Quartz 调度程序所需的属性,例如驱动程序类名、数据源 URL、用户名称和密码等。

5. 运行以下命令构建 Docker 镜像:

```bash
docker build -t myquartzapp .
  1. 在 Docker Compose 文件中添加以下配置:
version: "3"

services:
  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=testdb
      - MYSQL_USER=testuser
      - MYSQL_PASSWORD=testpass
    ports:
      - "3306:3306"
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/testdb?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
      - SPRING_DATASOURCE_USERNAME=testuser
      - SPRING_DATASOURCE_PASSWORD=testpass
      - SPRING_QUARTZ_JOB-STORE-TYPE=jdbc
      - SPRING_QUARTZ_JDBC_INITIALIZE-SCHEMA=always
    depends_on:
      - db
  1. 运行以下命令,启动 Docker 容器:
docker-compose up

执行结束后,你的 Spring Boot 应用程序将定时打印“Hello world!”消息。完整的 Docker 配置文件和常规应用程序推荐放在同一个 Git 仓库中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:idea整合docker快速部署springboot应用的详细过程 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Docker Compose与Docker镜像仓库详解

    Docker Compose与Docker镜像仓库详解 Docker Compose是一个用于定义和运行多个Docker容器应用程序的工具,它可以通过一个单独的文件来定义整个应用程序的多个容器,包括容器之间的关系、网络连接等。 Docker镜像仓库是用于存储和管理Docker镜像的中央存储库,它被用于存储各种Docker镜像,供其它用户和项目进行使用。 Do…

    Docker 2023年5月16日
    00
  • docker安装各类软件

    Docker 要求 CentOS 系统的内核版本高于 3.10 , uname -r 命令查看你当前的内核版本 1 安装一些必要的系统工具: sudo yum install -y yum-utils device-mapper-persistent-data lvm2    2 添加软件源信息: sudo yum-config-manager –add-…

    Docker 2023年4月11日
    00
  • Rancher 系列文章-K3s Traefik MiddleWare 报错-Failed to create middleware keys

    概述 书接上回:《Rancher 系列文章-K3S 集群升级》, 我们提到:通过一键脚本升级 K3S 集群有报错。 接下来开始进行 Traefik 报错的分析和修复, 问题是: 所有 Traefik 的 IngressRoute 访问报错 404 问题描述 报错如下: time=”2022-05-05T09:51:21Z” level=error msg=”…

    Docker 2023年4月8日
    00
  • 从0开始了解Docker入门(小结)

    以下是详细的讲解: 从0开始了解Docker入门(小结) 什么是Docker Docker是一种容器化技术,它可以让开发者将应用程序及其依赖项打包在一个虚拟化的容器中,并将其部署到生产环境中。 Docker的优势 轻量级:与传统虚拟机相比,Docker容器更轻量级,启动速度也更快。 移植性:可以在任何地方运行Docker容器,而不必担心环境差异。 管理性:与…

    Docker 2023年5月16日
    00
  • docker-创建容器常见选项

    1. docker run创建容器常见选项 1.1 创建容器 选项 描述 -i,-interactive 交互式 -t,-tty 分配一个伪终端 -d,-detach 运行容器到后台 -e,-env 设置环境变量 -p(小写),-publish list 发布容器端口到主机 -P(大写),-publish -all 发布容器所有EXPOSE的端口到宿主机随机…

    Docker 2023年4月16日
    00
  • docker容器内缺少命令如何解决

    这篇文章主要介绍“docker容器内缺少命令如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker容器内缺少命令如何解决”文章能帮助大家解决问题。 背景 而使用 docker exec 进入其中后,但该容器没有安装 sudo 或 netstat 或者 ping 等命令。 解决方案 在宿主机使用 nsent…

    Docker 2023年4月8日
    00
  • centos搭建部署docker环境的详细步骤

    以下是“CentOS搭建部署Docker环境的详细步骤”的完整攻略: 1. 更新系统软件包 在开始安装Docker之前,建议先更新您的CentOS操作系统中的所有软件包,以便您获得最新版本的软件包: sudo yum update -y 2. 卸载旧版本Docker 如果您曾经安装过旧版本的Docker,请先卸载掉,以免产生任何冲突。使用以下命令卸载旧版本的…

    Docker 2023年5月16日
    00
  • Wiki.js配置LDAP认证

    安装好wikijs 之后, 可以进行进一步的详细配置. 这里介绍 LDAP 认证的配置. 在 管理 -> 身份验证 -> 添加策略 -> 选择 LDAP/AD , 如下: 接下来进行详细配置: 显示名称: 按需修改 是否启用: 是 LDAP URL: 格式为: ldap://serverhost:389 or ldaps://serverh…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部