一键式部署:springboot项目到docker

简介: 一键式部署:springboot项目到docker

一、背景



之前写了一篇文章:docker-compose部署java项目,每次使用之前需要在本地ide环境打包成jar包,然后上传到linux环境,进入到指定目录,执行docker-compose build,完毕后执行docker-compose up -d,这一路下来麻烦至极,于是想着为啥不能用脚本来执行打包jar、生成并运行docker镜像,于是这篇一键式部署由此而生...


二、环境



# 1. jdk 1.8(不是jre 1.8)
[root@192 ~]# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
# 2. maven
[root@192 ~]# mvn --version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
Maven home: /root/apache-maven-3.5.4
Java version: 1.8.0_202, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_202-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.18.2.el7.x86_64", arch: "amd64", family: "unix"
# 3. git
[root@192 ~]# git --version
git version 1.8.3.1
# 4. docker-compose
[root@192 ~]# docker-compose -v
docker-compose version 1.24.1, build 4667896b


三、具体实现



  1. 配置ssh,方便拉取仓库中的代码,参考超详细!linux环境git clone探坑录
  2. 编写dockerFile,参考Docker(四) 通过DockerFile自定义镜像
  3. 编写docker-compose.yml,参考docker-compose部署java项目
  4. 编写部署脚本deployment.sh


#!/usr/bin/env bash
# 清理容器
docker system prune -f
docker network prune -f
# 打包
mvn clean install -Dmaven.test.skip=true
# 生成并运行docker images
docker-compose -f docker-compose.yml up --build -d


  1. cd指定目录,拉取代码git clone xxxxxx.git
  2. cd进入到脚本目录,并赋权限,不然无法执行
[root@192 ~]# cd /root/test/car_wash_api/scripts/
[root@192 scripts]# ll
total 4
-rwxrwxrwx. 1 root root 230 Dec 10 14:31 deployment.sh
[root@192 scripts]# chmod 777 deployment.sh


  1. cd到项目根目录,执行脚本
[root@192 car_wash_api]# ./scripts/deployment.sh 
java_test
Untagged: java/test:8.0.0
Deleted: sha256:fbe38eaedd94b14bc73df95ca2e2aa3964da176413f79b9a074c415ac081aa4a
Deleted: sha256:af64b61cb4ee12414de33acefe59de973dab654467d86f5ebe10fa7cd33ba120
Deleted: sha256:6a603856139b6f6bbcdc5d0afaa71a782417949e17951b1c9ead3d54efab5ebd
[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] expected START_TAG or END_TAG not TEXT (position: TEXT seen ...</mirror>\n     -->\n  <mirror>\n\n\ua0<i... @164:4)  @ /root/apache-maven-3.5.4/conf/settings.xml, line 164, column 4
[WARNING] 
[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------------< com.example:docker_images >----------------------
[INFO] Building docker_images 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ docker_images ---
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ docker_images ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ docker_images ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3 source files to /root/test/car_wash_api/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ docker_images ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ docker_images ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ docker_images ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ docker_images ---
[INFO] Building jar: /root/test/car_wash_api/target/docker_images-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.3.5.RELEASE:repackage (repackage) @ docker_images ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ docker_images ---
[INFO] Installing /root/test/car_wash_api/target/docker_images-0.0.1-SNAPSHOT.jar to /root/.m2/repository/com/example/docker_images/0.0.1-SNAPSHOT/docker_images-0.0.1-SNAPSHOT.jar
[INFO] Installing /root/test/car_wash_api/pom.xml to /root/.m2/repository/com/example/docker_images/0.0.1-SNAPSHOT/docker_images-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.560 s
[INFO] Finished at: 2020-12-10T14:03:40-05:00
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "local" could not be activated because it does not exist.
Building test
Step 1/5 : FROM openjdk:8
 ---> 192ceee8f2fd
Step 2/5 : LABEL description "Java 8"
 ---> Using cache
 ---> 64211c0ae4ae
Step 3/5 : EXPOSE 8088
 ---> Using cache
 ---> 3108e3140265
Step 4/5 : ADD /target/docker_images-0.0.1-SNAPSHOT.jar docker_images-0.0.1-SNAPSHOT.jar
 ---> 15a61a7a9a78
Removing intermediate container d7e4d78a6e49
Step 5/5 : ENTRYPOINT java -jar docker_images-0.0.1-SNAPSHOT.jar
 ---> Running in 0c291157db5f
 ---> c670624febf2
Removing intermediate container 0c291157db5f
Successfully built c670624febf2
Creating java_test ... done


  1. 查看项目是否启动,是否可以正常访问
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c92658ee7f3b        java/test:8.0.0     "java -jar docker_..."   6 seconds ago       Up 5 seconds        0.0.0.0:8088->8088/tcp   java_test

640.png

image


四、补充说明



  1. 安装环境的时候可能会碰到很多的坑,放心,我已经帮您趟过了,有问题可以参考这篇centos 7 yum安装失败(HTTP Error 404 - Not Found)的解决方法
  2. 如果有需要,可以访问源码地址
目录
相关文章
|
2月前
|
Java 应用服务中间件 Maven
如何将 Spring Boot 应用程序部署为 WAR?
如何将 Spring Boot 应用程序部署为 WAR?
147 1
|
11天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
2天前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
24 10
|
2天前
|
Java 应用服务中间件
SpringBoot工程打包部署
SpringBoot工程打包部署简介:SpringBoot项目可通过三种方式运行:可执行Jar包、可执行War包和标准War包。其中,可执行Jar/War包可独立运行,标准War包需部署在Tomcat中。具体步骤包括:1. 修改pom.xml添加构建依赖;2. 执行`mvn clean package`命令打包;3. 运行生成的Jar/War包(如`java -jar xxx.jar`)。对于标准War包,还需修改启动类并配置Tomcat依赖。
|
23天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
48 3
实战~如何组织一个多容器项目docker-compose
|
1月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
38 6
|
1月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
61 5
|
1月前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
44 5
|
1月前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
39 2
|
2月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!