Spring Boot打包部署
date: 2018-11-19 15:30:11
updated: 2018-11-21 08:28:37
Spring Boot打包部署
第一种方式 打包成jar包部署在服务器上
1.1 添加插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
1.2 打包

点开lifecycle 双击install 自动开始打包
1.3 放到linux服务器上,使用 java -jar SCM-v1.0.jar 命令运行
1.4 报错:8080端口被占用
Verify the connector's configuration, identify and stop any process that's listening on port 8080, or configure this application to listen on another port.
使用 lsof -i tcp:8080 命令来查看8080使用情况
解决:
①kill -9 进程的PID号 命令 杀死进程
②在application.properties文件中添加 server.port=8004 修改内置tomcat默认端口
第二种方式 使用Docker打包成镜像文件
2.1 在pom.xml -- properties 中添加以下内容
prefix 必须小写字母或者包含数字的字符串,不可以是大写!!!
<properties>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
2.2 在pom.xml文件中添加docker插件
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
2.3 在src/main/docker文件夹下创建Dockerfile文件,Dockerfile 文件用来说明如何来构建镜像

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD scm-v1.0.jar scm.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/scm.jar"]
上面两个 scm.jar 的名字必须是一致的
这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中,简单解释一下:
- FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
- VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
- ADD ,拷贝文件并且重命名
- ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
2.4 构建docker环境
yum install docker
2.5 安装jdk
yum -y install java-1.8.0-openjdk*
配置环境变量 打开 vim /etc/profile 添加一下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
export PATH=$PATH:$JAVA_HOME/bin
修改完成之后,使其生效
source /etc/profile
输入java -version 返回版本信息则安装正常。
2.6 安装maven
首先配置Apache源
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
使用yum安装
yum -y install apache-maven
2.7 将完整的项目文件打包为zip文件,上传到linux下
进入到项目路径下进行打包测试
#打包
mvn package
#启动
java -jar target/spring-boot-docker-1.0.jar
运行之后输入ip:端口号进行测试
成功之后使用Dockerfile构建镜像文件
必须先使用 mvn package 打包之后才能使用 docker:build 因为docker构建镜像需要把打包的jar文件复制到镜像中!!!需要管理员权限!!!
2.8 构建镜像
mvn package docker:build

注:docker构建镜像时会从34.205.207.96下面拉openjdk,可能会超时,多试几次就好了
成功之后查看镜像文件

2.9 运行镜像文件
输入以下指令运行镜像文件
docker run -p 8004:8004 -t springbootdocker/scm
同时会自动创建对应的容器来运行镜像文件

-p: 端口映射,格式为:主机(宿主)端口:容器端口
容器端口号与application.properties中写的server.port一致
主机(宿主)端口号是要访问虚拟机或服务器的端口号
比如application.properties中
server.port=8004
如果是 docker run -p 8004:8004 -t springbootdocker/scm 就访问 服务器IP:8004/user/home启动
如果是 docker run -p 8080:8004 -t springbootdocker/scm 就访问 服务器IP:8080/user/home启动
Spring Boot打包部署的更多相关文章
- docker + spring boot 打包 部署。
docker 安装 什么的 就不一一介绍了 不会安装百度一找一堆. 我这直接上代码. 首先你要有个spring boot项目. 然后打包.打包很简单 我打包的是 jar文件.直接在pom.xml文件里 ...
- spring boot打包部署到Linux环境
打包部署说白了就两步:打包.部署.废话不多说,直接拿spring boot自动生成的项目骨架,再添加一个文件用来演示: package com.crocodile.springboot; import ...
- Spring Boot 打包部署
一.打包成jar并部署 1.工程--右键选择运行配置: 在Goals中输入: org.apache.maven.plugins:maven-jar-plugin:.RELEASE:repackage ...
- spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)
一.spring boot 内置tomcat配置https: 关于自签名证书可以看下上一篇 spring boot1 更详细的可以看转载 https://www.jianshu.com/p/8d4ab ...
- Spring Boot打包war jar 部署tomcat
概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...
- spring boot打包以及centos下部署
spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...
- spring boot 打包war后 部署到外部 tomcat 的具体正确操作【包括修改端口 与 去除请求路径的工程名】
1.前言 工程做好了,总不能放在idea运行吧?不然怎么把项目放到云服务器呢?[这一篇随笔不讲解发布的云服务器的操作,在其他随笔有详细记载.] 解决的方案是把springboot 工程 打包成war文 ...
- 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...
- 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题
Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...
随机推荐
- MybatisPlus根据模板生成器代码
导读 网上的代码生成器,都不是自己想要的,今天下午研究了下,可以使用mybatisplus自定义模板,根据模板生成相应的代码,可以根据需求,改造相应模板即可.代码已上传github/百度云. 项目结构 ...
- 【答疑解惑】为什么你的 Charles 会抓包失败?
作为一名 Web 开发工程师,天天都会和网络打交道.Charles 作为一款网络抓包工具,几乎成了 Web 开发的标配. 本文是我深度使用 Charles 后总结而成,不同于其它介绍 Charles ...
- JVM学习目录
JVM学习目录 JVM的整体结构 1.类加载子系统 类加载子系统 2.运行时数据区 运行时数据区总览 堆.栈.方法区的详细图解 2.1.程序计数器 程序计数器 2.2.本地方法栈 本地方法栈 2.3. ...
- vue +signalR
概述:ASP.NET Core SignalR是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立即将内容推送到客户端. 这玩意的概念我就不多讲 ...
- Spring--AOP的见解
AOP是指面向切面编程,与JAVA中的动态代理有很深的渊源. 在使用Spring框架时,AOP编程能简化很多繁杂的步骤,精简代码. 切面:横切关注点(跨越程序中多个模块的功能),被模块化的特殊对象,也 ...
- 使用TiDB把自己写分库分表方案推翻了
背景 在日益数据量增长的情况下,影响数据库的读写性能,我们一般会有分库分表的方案和使用newSql方案,newSql如TIDB.那么为什么需要使用TiDB呢?有什么情况下才用TiDB呢?解决传统分库分 ...
- USB口,串口,以太网口简介
USB口 一.什么是USB? USB是英文Universal Serial Bus的缩写,中文含义是"通用串行总线".它是一种应用在PC领域的新型接口技术.早在1995年,就已经有 ...
- Java安全之Commons Collections1分析(一)
Java安全之Commons Collections1分析(一) 0x00 前言 在CC链中,其实具体执行过程还是比较复杂的.建议调试前先将一些前置知识的基础给看一遍. Java安全之Commons ...
- Iptables 下 SNAT、DNAT和MASQUERADE三者之间的区别
Iptables 中可以灵活的做各种网络地址转换(NAT,Network Address Translation) 网络地址转换(NAT)主要有两种:SNAT 和 DNAT,但是也有一种特例 MASQ ...
- SQL Server查询优化指南
1.尽量不要使用is null,否则将导致引擎放弃使用索引而进行全表扫描.2.char是固定长度,速度快,但占空间,varchar不固定长度,不占空间,但速度慢.3.能使用数字类型就不要使用字符,查询 ...