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 到镜像中,简单解释一下:

  1. FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
  2. VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
  3. ADD ,拷贝文件并且重命名
  4. 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打包部署的更多相关文章

  1. docker + spring boot 打包 部署。

    docker 安装 什么的 就不一一介绍了 不会安装百度一找一堆. 我这直接上代码. 首先你要有个spring boot项目. 然后打包.打包很简单 我打包的是 jar文件.直接在pom.xml文件里 ...

  2. spring boot打包部署到Linux环境

    打包部署说白了就两步:打包.部署.废话不多说,直接拿spring boot自动生成的项目骨架,再添加一个文件用来演示: package com.crocodile.springboot; import ...

  3. Spring Boot 打包部署

    一.打包成jar并部署 1.工程--右键选择运行配置: 在Goals中输入: org.apache.maven.plugins:maven-jar-plugin:.RELEASE:repackage ...

  4. spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)

    一.spring boot 内置tomcat配置https: 关于自签名证书可以看下上一篇 spring boot1 更详细的可以看转载 https://www.jianshu.com/p/8d4ab ...

  5. Spring Boot打包war jar 部署tomcat

    概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...

  6. spring boot打包以及centos下部署

    spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...

  7. spring boot 打包war后 部署到外部 tomcat 的具体正确操作【包括修改端口 与 去除请求路径的工程名】

    1.前言 工程做好了,总不能放在idea运行吧?不然怎么把项目放到云服务器呢?[这一篇随笔不讲解发布的云服务器的操作,在其他随笔有详细记载.] 解决的方案是把springboot 工程 打包成war文 ...

  8. 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行

    实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...

  9. 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题

    Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...

随机推荐

  1. MybatisPlus根据模板生成器代码

    导读 网上的代码生成器,都不是自己想要的,今天下午研究了下,可以使用mybatisplus自定义模板,根据模板生成相应的代码,可以根据需求,改造相应模板即可.代码已上传github/百度云. 项目结构 ...

  2. 【答疑解惑】为什么你的 Charles 会抓包失败?

    作为一名 Web 开发工程师,天天都会和网络打交道.Charles 作为一款网络抓包工具,几乎成了 Web 开发的标配. 本文是我深度使用 Charles 后总结而成,不同于其它介绍 Charles ...

  3. JVM学习目录

    JVM学习目录 JVM的整体结构 1.类加载子系统 类加载子系统 2.运行时数据区 运行时数据区总览 堆.栈.方法区的详细图解 2.1.程序计数器 程序计数器 2.2.本地方法栈 本地方法栈 2.3. ...

  4. vue +signalR

    概述:ASP.NET Core SignalR是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立即将内容推送到客户端. 这玩意的概念我就不多讲 ...

  5. Spring--AOP的见解

    AOP是指面向切面编程,与JAVA中的动态代理有很深的渊源. 在使用Spring框架时,AOP编程能简化很多繁杂的步骤,精简代码. 切面:横切关注点(跨越程序中多个模块的功能),被模块化的特殊对象,也 ...

  6. 使用TiDB把自己写分库分表方案推翻了

    背景 在日益数据量增长的情况下,影响数据库的读写性能,我们一般会有分库分表的方案和使用newSql方案,newSql如TIDB.那么为什么需要使用TiDB呢?有什么情况下才用TiDB呢?解决传统分库分 ...

  7. USB口,串口,以太网口简介

    USB口 一.什么是USB? USB是英文Universal Serial Bus的缩写,中文含义是"通用串行总线".它是一种应用在PC领域的新型接口技术.早在1995年,就已经有 ...

  8. Java安全之Commons Collections1分析(一)

    Java安全之Commons Collections1分析(一) 0x00 前言 在CC链中,其实具体执行过程还是比较复杂的.建议调试前先将一些前置知识的基础给看一遍. Java安全之Commons ...

  9. Iptables 下 SNAT、DNAT和MASQUERADE三者之间的区别

    Iptables 中可以灵活的做各种网络地址转换(NAT,Network Address Translation) 网络地址转换(NAT)主要有两种:SNAT 和 DNAT,但是也有一种特例 MASQ ...

  10. SQL Server查询优化指南

    1.尽量不要使用is null,否则将导致引擎放弃使用索引而进行全表扫描.2.char是固定长度,速度快,但占空间,varchar不固定长度,不占空间,但速度慢.3.能使用数字类型就不要使用字符,查询 ...