在看了一些简单的docker命令之后 打算自己尝试整合一下docker+spring boot项目
本文是自己使用docker+spring boot 发布一个项目
1.docker介绍 docke是提供简单易用的容器接口
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
2.docker centos 安装
yum install docker-io –y
systemctl start docker
安装完成后 测试 docker info 或者docker version
3.镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,国内很多云服务商都提供了加速器服务
https://dockerhub.azk8s.cn、https://reg-mirror.qiniu.com、http://hub-mirror.c.163.com等
然后在 /etc/docker/daemon.json中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
之后重新启动服务。

4.其他软件安装

本文是基于centos下操作的,还需要在自己的服务器上装好 meven和java软件。

5.开始构建项目

直接新建一个spring boot 项目

 <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

 然后新建一个controller

@RestController
public class Ctrldocker {
@RequestMapping("/docker")
public String test(){
return "hello this is docker!";
}
}

 spring boot 项目新建好之后,在本地测试一下,启动服务访问127.0.0.1:8080/docker 得到返回参数 hello this is docker! 说明spring boot 项目没有问题。下面开始配置docker

6.配置spring boot中docker的配置

在pom文件中的增加 Docker 构建插件

 <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 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 -->
</plugins> </build>

  在pom文件中的properties中增加docker镜像的名字

<properties>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>

  在spring boot项目中增加一个docker文件夹,并在文件夹中新增一个Dockerfile文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  文件的意思很简单

FROM ,是指本项目 继承openjdk:8-jdk-alpine镜像,如果没有没有则会在dockerhub上拉取过来。

VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录

ADD ,拷贝文件并且重命名

ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

到此位置docker + spring boot 项目构建基本完成 最后开始测试打包。

7.测试发布

将我们的项目发送到我们的服务器中,进入项目路径

#打包
mvn package
#启动
java -jar target/demo-0.0.-SNAPSHOT.jar

启动成功则说明我们的正常打包流程是没有问题的,下面我们开始构建一个镜像

mvn package docker:build

看懂BUILD SUCCESS 后说明镜像就构建好了

我们可以使用docker images

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
springboot/demo latest 457d124b2fdb 4 days ago 122 MB

  这里可以看到我们构建成功的镜像

docker run -p 8080:8080 -t springboot/demo

运行我们的镜像,运行成功后 我们可以使用访问服务器的地址 http://xxx.xx.xx:8080/docker 查看返回信息

使用docker构建第一个spring boot项目的更多相关文章

  1. 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目

     随着使用Spring进行开发的个人和企业越来越多,Spring从一个单一简介的框架变成了一个大而全的开源软件,最直观的变化就是Spring需要引入的配置也越来越多.配置繁琐,容易出错,让人无比头疼, ...

  2. 构建第一个Spring Boot项目

    1.启动IntelliJ IDEA,点击"Create New Project"  2.选择"Spring initializr",设定SDK及Spring ...

  3. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  4. spring boot学习01【搭建环境、创建第一个spring boot项目】

    1.给eclipse安装spring boot插件 Eclipse中安装Spring工具套件(STS): Help -> Eclipse Marketplace... 在Search标签或者Po ...

  5. 从零开始的Spring Boot(1、搭建一个Spring Boot项目Hello World)

    搭建一个Spring Boot项目Hello World 写在前面 从零开始的Spring Boot(2.在Spring Boot中整合Servlet.Filter.Listener的方式):http ...

  6. 使用IntelliJ IDEA新建一个spring boot项目

    好家伙, 使用IntelliJ IDEA新建一个spring boot项目 目的很简单,就是网页上出现一个"hello world" 别的暂时不管 首先关于工具IntelliJ I ...

  7. 创建一个 Spring Boot 项目,你会几种方法?

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有 ...

  8. 构建第一个 Spring Boot 工程

    Spring Boot概述 什么是Spring Boot 随着动态语言的流行,java的开发显得格外笨重,繁多的配置文件编写,低下的开发效率,复杂的部署流程以及第三方技术集成难度大. 在上述环境下Sp ...

  9. IDEA新建一个Spring Boot项目

    Maven构建项目模板 maven构建的是maven风格的纯净模板,要转变成spring boot项目需要自己添加依赖等配置. mvn archetype:generate: Maven插件原型是一个 ...

随机推荐

  1. mysql5.7导出数据提示--secure-file-priv选项问题的解决方法

    mysql可使用 into outfile 参数把表中数据导出到csv,例如可用以下命令把user表的数据导出到user.csv select * from user into outfile '/t ...

  2. springboot10(docker)

    一 Docker 1 what's the Docker? ​ Docker是一个开源的应用容器引擎,轻量级容器技术. ​ Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器 ...

  3. 创建Vue项目及其内容分析

    利用 vue 脚手架开发企业级应用     # 全局安装 vue-cli     npm install --global vue-cli    # 创建一个基于 webpack 模板的新项目     ...

  4. report_delay_calculation/check_timing/report_annotated_parasitics/report_analysis_coverge

    如何debug 一颗cell 或一段net 的delay,  常用的办法是用report_delay_calculation 报这颗cell 或这段net, 会得到形式如下的report, 从该rep ...

  5. java爬虫出现java.lang.IllegalArgumentException: Illegal character in path at index 31

    url地址中出现了空格,使用trim()函数去除空格就好了

  6. unittest 测试套件使用汇总篇

    # coding=utf-8import unittestfrom inspect import isfunction def usage(): """also unit ...

  7. Cesium 基于MapBox底图加载3DTiles 模型

    3DTiles 模型采用   CATIA V5 R22 --->3dxml --->GLB--->B3DM var extent = Cesium.Rectangle.fromDeg ...

  8. 图片上传至/target/upload目录下后,通过ip:port/upload/无法访问

    做以下配置即可 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { try { registry ...

  9. 【代码学习】PYTHON 生成器

    一.生成器 一遍循环一遍计算的机制,称为生成器 二.生成器的特点: 1.节约内存 2.迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的, ...

  10. 使用notepad++运行python

    参考博客:https://blog.csdn.net/humanking7/article/details/80464000 尽管有pycharm和spyder这样的IDE可以编写python程序,但 ...