一键式部署: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. 如果有需要,可以访问源码地址
目录
相关文章
|
21小时前
|
Cloud Native 测试技术 Linux
云原生之使用Docker部署homer静态主页
【5月更文挑战第7天】云原生之使用Docker部署homer静态主页
7 0
|
1天前
|
监控 Cloud Native 测试技术
云原生之使用Docker部署ServerBee服务器监控工具
【5月更文挑战第6天】云原生之使用Docker部署ServerBee服务器监控工具
10 1
|
2天前
|
前端开发 应用服务中间件 nginx
前后端分离项目Docker部署指南(下)
前后端分离项目Docker部署指南(下)
|
2天前
|
NoSQL 关系型数据库 网络安全
前后端分离项目Docker部署指南(上)
前后端分离项目Docker部署指南(上)
|
3天前
|
开发框架 安全 网络安全
【Docker 专栏】Docker 多平台应用构建与部署
【5月更文挑战第8天】Docker作为一种关键的容器化技术,简化了多平台应用的构建与部署。它提供一致的运行环境,确保应用在不同平台无缝运行;通过分层构建机制加速镜像创建,提升开发效率。Docker的可移植性、高效部署及资源利用率是其主要优势。流程包括开发环境准备、构建镜像、测试验证及部署。然而,面临操作系统差异、网络安全和资源限制等挑战,需注意安全、版本管理和性能优化。Docker在多平台场景的应用将持续发挥价值。
【Docker 专栏】Docker 多平台应用构建与部署
|
3天前
|
存储 关系型数据库 Linux
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
26 4
|
3天前
|
数据可视化 Linux Docker
如何使用Docker部署Dashy并无公网ip远程访问管理界面
如何使用Docker部署Dashy并无公网ip远程访问管理界面
5 0
|
2天前
|
Java 关系型数据库 MySQL
保姆级教程——将springboot项目部署到阿里云服务器包含环境配置(小白包会)
本文档详细介绍了将SpringBoot项目部署到阿里云服务器的步骤。首先,通过Xshell连接服务器,使用公网IP地址。接着,下载JDK的Linux版本,使用XFTP上传并解压,配置环境变量。然后,安装MySQL 5.7,包括下载YUM源、安装、启动服务以及修改root密码和开启远程访问。最后,将SpringBoot项目打包成jar,上传至服务器,使用`java -jar`命令运行,通过`nohup`确保服务持续运行。配置安全组以允许远程访问。
|
前端开发 JavaScript 关系型数据库
前后端分离 -- SpringBoot + Vue实战项目 部署至阿里云服务器
前后端分离 -- SpringBoot + Vue实战项目 部署至阿里云服务器
2443 2
前后端分离 -- SpringBoot + Vue实战项目 部署至阿里云服务器
|
9月前
|
JavaScript 前端开发 Java
SpringBoot + Vue 前后端分离项目部署到服务器上
SpringBoot + Vue 前后端分离项目部署到服务器上
475 0