把代码和环境做成docker镜像_把java(springboot)程序打包docker镜像

前言:要在docker运行java(jar包)程序,就要把程序打包成docker镜像(以下简称镜像),可以先理解为镜像就是jar包

打包需要程序代码,java本身的打包环境(包括jdk和maven),以及docker,因此本文在装了以上环境的环境(尤其是装了docker)进行打包

首先要修改代码

使用ewater框架开发的程序,代码文件需要修改,才能进行打包成docker镜像

在此路径添加名为Dockerfile的文件

内容为:

FROM openjdk:8-jdk-alpine

VOLUME /tmp

ADD ewater-0.0.1.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

PS:第3行的“ewater-0.0.1.jar”要按maven打包输出的文件实际修改

修改pom文件

springio

com.spotify

docker-maven-plugin

0.4.14

${docker.image.prefix}/${project.artifactId}

${project.version}

latest

src/main/docker

/

${project.build.directory}

${project.build.finalName}.jar

修改代码完毕,接原文

然后把代码拷到打包的电脑,cd进代码目录(pom文件所在目录)

-P dev-docker

运行mvn package -P dev-docker docker:build,把程序打包为镜像。第一次打包会久一些

PS:参数-P是指定打包使用的profile名称,不一定需要

PS:成功的样子

运行docker image ls,列出所有本地镜像,可以看到刚才打包的

PS:为什么一个镜像有两行?先不展开,注意他们tag不一样

镜像打包到此完成

下面还扩展一下:在docker以镜像方式运行java程序

Dokcer可以单独使用,k8s不是必须的,在有k8s之前docker就是单独使用

本文假设java程序的镜像已经打包好且在本地,运行的是以下镜像

运行docker run -p 20801:20801 -t springio/ewater,启动名为springio/ewater的镜像

端口:两个20801代表http端口,因为本java程序是springboot,springmvc开发,有http请求功能,所以需要端口

PS:启动时有命令行输出,内容跟直接运行jar包差不多

到此启动成功,可以在浏览器访问里面的http请求来测试

PS:ip是master1的ip,端口是docker run指定的端口

扩展:如何停止运行中的镜像?

首先科普个新名称——容器(container),镜像运行时叫容器,一个镜像可以开启运行多个容器(就像一个jar包可以同时在多个tomcat运行)

因此问题应该是如何停止运行中的容器

运行docker ps,可见所有运行中的容器

CONTAINER ID是容易的唯一id

然后有以下的命令:

停止运行容器(fca333c9ce5f代表容器id)

docker stop fca333c9ce5f

删除容器

docker rm fca333c9ce5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值