date: 2018-11-19 15:30:11

updated: 2018-11-21 08:28:37

Spring Boot打包部署

第一种方式 打包成jar包部署在服务器上

1.1 添加插件

  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. </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 必须小写字母或者包含数字的字符串,不可以是大写!!!

  1. <properties>
  2. <docker.image.prefix>springboot</docker.image.prefix>
  3. </properties>

2.2 在pom.xml文件中添加docker插件

  1. <!-- Docker maven plugin -->
  2. <plugin>
  3. <groupId>com.spotify</groupId>
  4. <artifactId>docker-maven-plugin</artifactId>
  5. <version>1.0.0</version>
  6. <configuration>
  7. <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
  8. <dockerDirectory>src/main/docker</dockerDirectory>
  9. <resources>
  10. <resource>
  11. <targetPath>/</targetPath>
  12. <directory>${project.build.directory}</directory>
  13. <include>${project.build.finalName}.jar</include>
  14. </resource>
  15. </resources>
  16. </configuration>
  17. </plugin>
  18. <!-- Docker maven plugin -->

2.3 在src/main/docker文件夹下创建Dockerfile文件,Dockerfile 文件用来说明如何来构建镜像

  1. FROM openjdk:8-jdk-alpine
  2. VOLUME /tmp
  3. ADD scm-v1.0.jar scm.jar
  4. 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环境

  1. yum install docker

2.5 安装jdk

  1. yum -y install java-1.8.0-openjdk*

配置环境变量 打开 vim /etc/profile 添加一下内容

  1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
  2. export PATH=$PATH:$JAVA_HOME/bin

修改完成之后,使其生效

  1. source /etc/profile

输入java -version 返回版本信息则安装正常。

2.6 安装maven

首先配置Apache源

  1. wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

使用yum安装

  1. yum -y install apache-maven

2.7 将完整的项目文件打包为zip文件,上传到linux下

进入到项目路径下进行打包测试

  1. #打包
  2. mvn package
  3. #启动
  4. java -jar target/spring-boot-docker-1.0.jar

运行之后输入ip:端口号进行测试

成功之后使用Dockerfile构建镜像文件

必须先使用 mvn package 打包之后才能使用 docker:build 因为docker构建镜像需要把打包的jar文件复制到镜像中!!!需要管理员权限!!!

2.8 构建镜像

  1. mvn package docker:build

注:docker构建镜像时会从34.205.207.96下面拉openjdk,可能会超时,多试几次就好了

成功之后查看镜像文件

2.9 运行镜像文件

输入以下指令运行镜像文件

  1. docker run -p 8004:8004 -t springbootdocker/scm

同时会自动创建对应的容器来运行镜像文件

-p: 端口映射,格式为:主机(宿主)端口:容器端口

容器端口号与application.properties中写的server.port一致

主机(宿主)端口号是要访问虚拟机或服务器的端口号

比如application.properties中

  1. 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. Gradle系列之Android Gradle高级配置

    本篇文章主要在之前学习的基础上,从实际开发的角度学习如何对 Android Gradle 来进行自定义以满足不同的开发需求,下面是 Gradle 系列的几篇文章: Gradle系列之初识Gradle ...

  2. cnpm install 报错

    报错如图所示,请观下文 1,npm cache clean --force 2,进入文件,rm -rf node_modules/ ---- 暴力直接

  3. git的详细使用,项目创建到同步远程仓库,版本回退,忽略文件,分支创建,分支合并,分支名称修改,冲突解决,项目迁移

    注意:此处省略git的安装 1..git的工作流程示意图: 2.本地仓库的初始化: 2.1 创建一个文件夹,如我创建的是:D:\gitdemo\shop 2.2 进入shop目录,鼠标右键,打开git ...

  4. Java基于POI实现excel任意多级联动下拉列表——支持从数据库查询出多级数据后直接生成【附源码】

     Excel相关知识点 (1)名称管理器--Name Manager [CoderBaby]首先需要创建多个名称(包含key及value),作为下拉列表的数据源,后续通过名称引用.可通过菜单:&quo ...

  5. modelviewset views

    Python 1.4创建user/serializers.py写序列化器 from rest_ framework import serializers from user .models impor ...

  6. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  7. Windows 无法验证此设备所需的驱动程序的数字签名”的问题

    转载: 1.https://jingyan.baidu.com/article/375c8e19c2b25b25f2a229a3.html 2. https://jingyan.baidu.com/a ...

  8. 如何确定芯片pin1的位置

    来源:https://www.raviyp.com/embedded/150-identifying-pin-no-1-on-an-ic Identifying pin no 1 on an IC R ...

  9. 【题解】[USACO19DEC]Milk Visits G

    题目戳我 \(\text{Solution:}\) 这题不要把思想局限到线段树上--这题大意就是求路径经过的值中\(x\)的出现性问题. 最开始的想法是值域线段树--看了题解发现直接\(vector\ ...

  10. CDH5部署三部曲之一:准备工作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...