古镇建网站公司,网站项目设计与制作综合实训,专业电商网站建设,巩义网站建设指标点把SpringBoot项目打包成Docker镜像有两种方案#xff1a;
全自动化#xff1a;先打好docker镜像仓库#xff0c;然后在项目的maven配置中配置好仓库的地址#xff0c;在项目里配置好Dockerfile文件#xff0c;这样可以直接在idea中打包好后自动上传到镜像仓库#xff0c…
把SpringBoot项目打包成Docker镜像有两种方案
全自动化先打好docker镜像仓库然后在项目的maven配置中配置好仓库的地址在项目里配置好Dockerfile文件这样可以直接在idea中打包好后自动上传到镜像仓库然后去服务器上启动这个镜像就行了。
半自动化半自动化又有两种方案一种是Dockerfile文件放在项目里面一种是放在项目外面。
放在项目里面springboot pom.xml中配置maven插件支持打包时会使用项目里面的dockerfile如果没配置插件支持会报错找不到dockerfile文件 放在项目外面springboot还是打包成普通的jar然后把这个jar上传到服务器同时在服务器创建一个Dockerfile文件执行docker build命令把这个jar构建成一个docker镜像然后通过镜像执行。 一般来说用半自动化比全自动化用的多,本文用的算是半自动化方式的第二种总体来说有一下几个步骤 创建docoerfile
(1)在项目里新建一个名为Dockerfile的文件 编写Dockerfile
#基础镜像
FROM openjdk:8-jre#发布到网上时只会把jar包和Dockerfile发布上去
# 把当前目录下的jar包拷贝进docker镜像里
COPY *.jar /ftdocker.jar#CMD命令用于指定这个容器启动的时候要运行的命令(CMD一行只执行一个命令可以写多个CMD)
#地址映射
CMD [--server.port8088]#对外暴露端口
EXPOSE 8088# ENTRYPOINT命令用于指定这个容器启动的时候要运行的命令(可以追加命令)
#执行命令
ENTRYPOINT [java, -Xmx512m, -jar, /ftdocker.jar]在服务器里的你想存放项目的位置新建文件夹用于存放Java项目 把打包好的jar包和Dockerfile文件上传到服务器里 使用Dockerfile打包出一个docker镜像 #选项及解释 -t的t是tag,表示生成的镜像的名称和版本号 .表示当前构建时上下文的路径为当前目录 docker build -t todocker:0.1 . 效果图 如果指定FROM java:8Jenkins构建服务Dockerfile报错manifest for java:8-jre not found: manifest unknown: manifest unknown
1、问题描述 Jenkins构建服务控制台报错
manifest for java:8-jre not found: manifest unknown: manifest unknown
1、截图 2、解决问题 这是由于Docker官方已经弃用java8镜像想使用jdk1.8的话可以使用openjdk。 解决办法是将Dockerfile改为 FROM openjdk:8-jre
FROM openjdk:8-jreRUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ echo Asia/Shanghai /etc/timezoneARG JAR_FILE
COPY ${JAR_FILE} /app.jarENTRYPOINT [java, -Xmx512m, -Djava.security.egdfile:/dev/./urandom, -Ddruid.mysql.usePingMethodfalse, -jar, /app.jar]
CMD [--spring.profiles.activeprod]使用以下命令查看镜像是否构建成功
docker images
效果图 使用以下命令利用我们新建的docker镜像来启动docker容器 #选项及解释 -d表示容器在后台运行 -P表示随机指定端口或者-p指定端口 --namename参数用于给容器取名字 用来区分容器 docker run -d -p 8012:8012 --name 容器名称 镜像名称:版本 效果图 访问docker容器内的项目
(1)因为用-P参数随机指定了docker的端口来映射docker容器内的SpringBoot项目的8080端口导致不知道docker随机指定的是哪个端口所以使用以下命令查看随机指定的docker端口是什么(如果在启动docker容器时指定了端口可以不用进行这一步操作)
docker ps 效果图 (2)使用curl命令来访问docker容器内的SpringBoot项目出现404的字眼证明SpringBoot项目启动成功
curl localhost:docker随机指定的端口 效果图 (3)使用curl命令调用SpringBoot项目的接口发现能调用成功
curl localhost:docker随机指定的端口/接口路径 效果图 其他问题 这个错是某个容器已经存在了 可以用下面命令进行停止 并删除 最后启动
docker stop name/image_id
docker rm name/image_id 通过标签删除镜像
通过如下两个都可以删除镜像
docker rmi [image]或者
docker image rm [image]
强制删除
docker rmi -f image_id
容器操作命令汇总: 参考链接 停止容器: docker stop hello1启动已经停止容器: docker start hello1进入容器: docker exec -it hello1 /bin/bash删除容器: docker rm -f hello1帮助命令: docker --help 参考链接链接1链接2