2019独角兽企业重金招聘Python工程师标准>>>

仅想在Docker里运行一个Spring Boot项目,捣鼓了许久。。。

本文主要适用于Windows环境下的Docker

一、运行环境

  • Windows 10
  • Maven 3.5
  • Docker 18.06.1-ce-win73 (19507)

二、创建Spring Boot项目

空空如也。。。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController
@SpringBootApplication
public class GreetApplication {@GetMapping("hello")public String hello() {return "Hello Docker!";}public static void main(String[] args) {SpringApplication.run(GreetApplication.class, args);}
}

三、创建一个Dockerfile

参考:https://spring.io/guides/gs/spring-boot-docker/

内容:和官方指南完全一样;下边只说FROM,其他几个官网解释的很好

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

1、什么是FORM

我们定制镜像,需要以一个镜像为基础,FROM 指代的就是。

2、官方用哪个

openjdk:8-jdk-alpine

因为不知道为啥是这个,毕竟也是第一次见,就先试试其他的。

依次下载了他们,openjdk、oracle/openjdk 和 openjdk:8-jdk-alpine

3、具体差异

3.1 使用 openjdk

3.2 使用 openjdk:8-jdk-alpine

差异很明显吧,镜像小了874MB(......)

四、修改pom.xml配置

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><skipTests>true</skipTests><docker.image.prefix>amos</docker.image.prefix>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies><build><finalName>greet</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.3.6</version><configuration><repository>${docker.image.prefix}/${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin></plugins>
</build>

五、指南正文

1、Maven 不识别 docker:build

你刚开始百度到的命令可能是:mvn clean package docker:build,然后运行,接着就失败了...

[ERROR] No plugin found for prefix 'docker' in the current project and in the plugin groups...

解决办法是修改 maven 的配置文件 settings.xml。( pluginGroups 在 settings.xml 中的位置很靠上)

<pluginGroups><pluginGroup>com.spotify</pluginGroup>
</pluginGroups>

后来,你可能会发现,使用mvn clean package dockerfile:build,就不会有上边的错误。这个仇先记下了。。。

2、Must specify baseImage if dockerDirectory

接下来,开始运行了,以为正常了。

[ERROR] ... Exception caught: Must specify baseImage if dockerDirectory is null -> [Help 1]

翻到https://github.com/spotify/dockerfile-maven,你会发现应该使用mvn clean package dockerfile:build,而不是mvn clean package docker:build。

3、Connect to localhost:2375 ... failed

[ERROR] ... Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect

右键运行中的docker,Settings,接着如下图

六、完

生成镜像到本地:mvn package dockerfile:build

查看镜像:docker images

运行镜像:docker run -d -p 8088:8080 --name greet amos/greet

浏览器内访问:

转载于:https://my.oschina.net/AmosWang/blog/2088358

Docker 部署 Spring Boot 项目初探相关推荐

  1. 快速使用 Docker 部署 Spring Boot 项目

    如今 Docker 的使用已经非常普遍,特别是在一线互联网公司,使用 Docker 技术可以帮助企业快速水平扩展服务,从而达到弹性部署业务的能力.在云服务概念兴起之后,Docker 的使用场景和范围进 ...

  2. Docker Review - Docker 部署 Spring Boot 项目

    文章目录 Pre 编辑Dockerfile Dockerfile 构建镜像 运行镜像 测试 Pre 随手搞个spring boot的演示项目 ,确保能访问 编辑Dockerfile [root@VM- ...

  3. Linux(centos7)上使用docker部署spring boot项目(加图超详细)

    准备工作 docker部署mysql并成功连接将所需数据库移入所部署的mysql中 docker部署java8 拉取镜像 docker pull java:8    查看镜像 docker image ...

  4. 使用 Docker 部署 Spring Boot 项目

    图文教程链接: http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html

  5. docker添加新的环境变量_Docker的安装及部署Spring Boot项目操作详解!

    本文使用Docker部署Spring Boot项目.部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven:接着搭建一个Spring Boot项目, ...

  6. Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  7. Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  8. (转)Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html Docker 技术发展为微服务落地提供了更加便利的环境,使 ...

  9. 使用 Docker 部署 Spring Boot

    使用 Docker 部署 Spring Boot Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. ...

最新文章

  1. 算法----单词拆分
  2. TensorRT安装及使用教程
  3. 结构型模式:桥接模式
  4. iOS之如何实现isEqual的重写
  5. Centos常用快捷键
  6. Jenkins file一行代码部署.NET程序到K8S
  7. 手把手带你写一个中断输入设备驱动
  8. 系统提升架构能力之10种mysql主从实践总结
  9. SkyCaiji蓝天数据采集发布系统源码v2.3
  10. css对各个浏览器兼容技巧
  11. 性能测试--jmeter的参数类型【5】
  12. python爬虫app_Python爬虫:抓取手机APP的数据
  13. 钢构cad3.5免费版及命令索
  14. 共享内存,信号,信号灯集
  15. 【数据挖掘】PCA 主成分分析算法过程及原理讲解
  16. 台式计算机输入设备,简述常用的输入设备和输出设备有哪些 – 手机爱问
  17. dnf服务器维护2018,2018年更新dnf游戏登陆不上 | 手游网游页游攻略大全
  18. 高质量的博客评论外链有用么?
  19. 义乌中学集训(没打的题慢慢补)
  20. alios下载_AliOS Studio下载

热门文章

  1. pdo连接mysql 注入_使用PDO查询mysql避免SQL注入
  2. mysql 超长 java 问题_MySql超长自动截断实例详解
  3. mysql 字符串超长截取_超长字符串截断注入
  4. python连接oracle报错TNS,python连接oracle数据库报出 ORA-12541: TNS: 无监听程序
  5. mac装python3问题_Mac下使用homebrew安装Python3问题-Go语言中文社区
  6. 万门大学高等数学特训班课前公式整理
  7. LabVIEW简单的PID控制程序
  8. 有趣的三扇门问题(Monty Hall Problem)
  9. vue创建脚手架时常见的报错
  10. 十进制浮点数转化为二进制的Python代码