基于win10+Docker+idea的SpringBoot项目容器化部署
以前发过一些docker相关的文章,也发过一些Springboot相关的文章,今天这篇文章是教大家如何在win10下面基于docker构建Springboot项目
工具 & 环境
maven
jdk
idea
docker
win10
win10上安装Docker
软件安装这个就不多说了,大家可以参考这个帖子 :链接如下:https://blog.****.net/hunan961/article/details/79484098
主要注意两点就行了:
1.允许版本:64位Windows 10 Pro,专业版、企业版和教育版
2.开启虚拟化。安装完成后,看到一个驮着很多集装箱的鲸鱼没,盘它!错了 ,点击启动它。
docker 安装完默认的docker hub 网址是 hub.docker.com ,注册一下,后面用到,比如,博主注册的账户是492782442
创建一个Springboot项目并且整合docker
如图:使用idea的傻瓜式操作创建一个Springboot项目项目创建好以后在pom里面加入
docker-maven-plugin
<properties>
<docker.image.prefix>492782442</docker.image.prefix>
</properties>
<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脚本的执行目录,创建docker目录并编写Dockerfile脚本
FROM cantara/alpine-openjdk-jdk8
COPY spring-boot-docker.jar /spring-boot-docker.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/spring-boot-docker.jar"]
只有三行脚本代码,为防止看不懂贴一下Docker语法:
FROM 基础镜像base image
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 执行命令
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设定环境变量
USER 指定路径
VOLUME 逻辑卷挂载点mount point
并根据实际情况使用。
可以看到Dockerfile里面有跟jar包有关的,那么在执行Dockerfile之前,install一下项目,并且使用 finalName
属性指定打jar包后的包名,
<build>
<finalName>spring-boot-docker</finalName>
...
直接使用idea的maven插件即可,点击install,构建jar包生成的jar包如图所示
构建docker镜像
学过maven语法和docker语法的都知道很多场景的命令方式,但是,有界面傻瓜操作不用不是傻吗,来,点开idea的右侧maven那一栏,Plugins下面有docker,展开点击第一个构建日志如下:
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building spring-boot-docker 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- docker-maven-plugin:1.0.0:build (default-cli) @ spring-boot-docker ---
[INFO] Using authentication suppliers: [ConfigFileRegistryAuthSupplier]
[INFO] Copying D:\博客\spring-boot-2.0-leaning\spring-boot-docker\target\spring-boot-docker.jar -> D:\博客\spring-boot-2.0-leaning\spring-boot-docker\target\docker\spring-boot-docker.jar
[INFO] Copying src\main\docker\Dockerfile -> D:\博客\spring-boot-2.0-leaning\spring-boot-docker\target\docker\Dockerfile
[INFO] Building image 492782442/spring-boot-docker
Step 1/3 : FROM cantara/alpine-openjdk-jdk8
---> b250403334b3
Step 2/3 : COPY spring-boot-docker.jar /spring-boot-docker.jar
---> c6466f2eafe9
Step 3/3 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/spring-boot-docker.jar"]
---> Running in 03f67a5ff7de
Removing intermediate container 03f67a5ff7de
---> c6aff6fdadd4
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built c6aff6fdadd4
Successfully tagged 492782442/spring-boot-docker:latest
[INFO] Built 492782442/spring-boot-docker
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.356 s
[INFO] Finished at: 2019-05-23T17:55:29+08:00
[INFO] Final Memory: 32M/330M
[INFO] ------------------------------------------------------------------------
构建好的镜像去哪看?docker本地仓库啊,这里再照顾对docker命令不熟悉的朋友,可以使用idea的界面去看 。先把界面调出来在界面点开连接之后,其他的都是傻瓜式交互了
试试本地基于镜像创建容器。在镜像上点击Create container
填写好端口映射之后,点击Run 启动,然后在idea里面可以看到相关日志,启动成功,完美!
那么到这是不是就结束了呢?显然不是,咱们只是在本地玩玩,远程怎么玩呢?
当然得把镜像推到远程仓库啊!
回到我们之前说的 去hub.docker.com 注册好了以后,创建
Repository
怎么理解呢,就跟你推送新项目到github一样就行了。
选择公开的,私有的要钱创建不了! 这里我们假设你们还是docker零基础,使用idea的页面进行操作,
鼠标右键镜像后点击push image
太慢了不好看进度,不装逼,直接用命令行了!
果然命令行还是贼快
完成!现在就可以在远程机器上pull下来愉快的玩耍了!
推荐阅读
徒手撸一个 Spring Boot 中的 Starter ,解密自动化配置黑魔法!
关注一下,尽知JAVA事!