在看了一些简单的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 查看返回信息

最新文章

  1. 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决
  2. intellij IDEA 出现“Usage of API documented as @since 1.6+”的解决办法
  3. UIDynamic(简单介绍)
  4. 实验二 简易版C语言文法
  5. ffmpeg进行视频转换
  6. Dapper学习 - Dapper的基本用法(三) - CUD
  7. POJ3292 Semi-prime H-numbers
  8. 重拾smslib
  9. 为mongodb加用户授权并使用RockMongo进行管理
  10. Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法:
  11. Tomcat 服务器的端口号的修改
  12. ANSI C中取得结构体字段偏移量的常用方法
  13. js实现微信朋友圈模糊图片功能
  14. Jeff Atwood质疑iPhone的单键设计
  15. djago 定义后台地址
  16. 网卡驱动-BD详解(缓存描述符 Buffer Description)
  17. 在springboot中 使用jsp
  18. 基于libcurl实现REST风格http/https的get和post
  19. flask学习(九):模板渲染和参数传递
  20. PVS BSP

热门文章

  1. Linux服务器上实现数据库和图片文件的定时备份
  2. Vue实例 动态组件实现选项卡
  3. ubuuntu截图
  4. echarts制作html和JavaScript的时钟和代码分析与注释
  5. CPI和PPI,谁代表了通膨?
  6. Linux - Shell - 字符串拼接
  7. Linux按文件名搜索命令
  8. cpu io disk mem监控 python
  9. 微信支付之H5支付
  10. eclipse 自定义代码块设置(代码模板)