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 教程之Docker Hub详细介绍

    Docker Hub详细介绍 Docker Hub 可以认为是 Docker 镜像的中心仓库,是 Docker 社区的一个重要组成部分。本文将详细介绍 Docker Hub 的使用方法和注意事项。 注册和登录 将 Docker Hub 视为镜像的中央仓库,首先需要在其网站上注册并登录。Docker Hub 网址为 https://hub.docker.com…

    Docker 2023年5月16日
    00
  • docker安装portainer方法详细步骤

    当您打算使用Docker来管理容器时,可以使用Portainer UI进行管理。Portainer是一个快速和轻量级的管理用户界面,可帮助您从一个单独的位置管理Docker容器,镜像和存储卷。以下是在安装Docker后安装Portainer的步骤: 1. 创建Docker网络 您必须创建一个新的Docker网络来安装portainer。您可以使用以下命令创建…

    Docker 2023年5月16日
    00
  • K8S 性能优化 – OS sysctl 调优

    前言 K8S 性能优化系列文章,本文为第一篇:OS sysctl 性能优化参数最佳实践。 参数一览 sysctl 调优参数一览 # Kubernetes Settings vm.max_map_count = 262144 kernel.softlockup_panic = 1 kernel.softlockup_all_cpu_backtrace = 1 …

    Docker 2023年4月9日
    00
  • Docker容器镜像相关命令基本介绍与使用

    Docker是目前最流行的容器化平台之一,为了更好地使用Docker,需要掌握一些基本的容器镜像相关命令。本文将介绍Docker容器镜像相关命令基本介绍与使用的完整攻略,并附带两个示例来说明。 1. Docker镜像命令 1.1 拉取镜像 要使用某个镜像,首先需要拉取镜像到本地。使用docker pull命令。 docker pull image-name:…

    Docker 2023年5月16日
    00
  • Docker-挂载宿主机目录到容器

    目的:将宿主机的目录挂载到容器指定目录,达到数据共享 测试: 1)启动容器正常 docker run -d -p 8094:8090 -it  xxx:zzz 2)启动容器时设置共享目录 docker run -d -p 8094:8090 -it -v /opt/0407:/opt supermapgis:0322 异常:容器启动失败 原因:挂载的容器目录…

    Docker 2023年4月13日
    00
  • WCF 服务容器化的一些问题

    目前项目当中存有 .NET Framework 和 .NET Core 两种类型的项目,但是都需要进行容器化将其分别部署在 Windows 集群和 Linux 集群当中。在 WCF 进行容器化的时候,遇到了以下几个问题: 1. 某些服务使用到了 WSHttpBinding 保护服务安全,要在容器里面加载 SSL 证书。2. WCF 服务的日志,如何重定向到标…

    Docker 2023年4月11日
    00
  • docker安装mongodb

    1、创建文件夹结构 ├── conf │   ├── mongo.conf ├── data └── log └── mongo.log #赋权限 chmod 777 mongo.log #mongo.conf文件内容 port=27017 dbpath=/data/db/ logpath=/data/log/mongo.log logappend=true…

    Docker 2023年4月11日
    00
  • Docker 启动 OpenResty

    OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。简单来说,OpenResty 是集成了更多功能的 Nginx。 步骤 拉取镜像 docker pull openresty/…

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