Spring boot 项目打 Docker 镜像

468 阅读2分钟

一、新建一个 Spring boot 项目

通过Spring 提供的脚手架 Spring Initializr 项目新建一个Java项目。

image.png

二、新建 dockerfile 文件

在项目的根目录新建一个 dockerfile 文件,我们这里使用 dockerfile 方式来构建 docker 镜像,如果不知道什么是 dockerfile ,请查看相关文档。

dockerfile 文件内容为下:

FROM openjdk:11-jdk 
RUN addgroup spring && adduser --ingroup spring spring
USER spring:spring
ARG DEPENDENCIES=build/dependencies
COPY ${DEPENDENCIES}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCIES}/META-INF /app/META-INF
COPY ${DEPENDENCIES}/BOOT-INF/classes /app
ENTRYPOINT ["java", "-cp", "app:app/lib/*", "xxx.xxxApplication"]

有了dockerfile 文件后,就可以通过docker build 来打镜像了。

三、Build docker image

mkdir -p build/dependencies && (cd build/dependencies; jar -xf ../libs/*.jar)
docker build --build-arg DEPENDENCY=build/dependencies -t 镜像的名字及标签

运行这两条命令前需要项目 build 成功后才可执行,因为需要依赖项目生成的 jar 文件。

至此,spring boot 项目就成功生成了 docker 镜像。

可以使用 docker ps 命令查看刚生成的镜像,也可以通过 docker run 命令来启动镜像。

四、启动镜像

docker run --name demo -p 8080:8080 镜像的名字及标签

这样就可以启动镜像了,暴露出来的端口是 8080,可以通过这个端口来访问服务。

五、使用 Spring profiles

一般开发和生产环境会使用不同的配置文件,可以在启动的时候指定 profile。

docker run --name demo -p 8080:8080 -e SPRING_PROFILES_ACTIVE=prod 镜像的名字及标签

六、推送镜像到远程仓库

docker push 镜像的名字及标签

这里的镜像名字要包含远程仓库的域名。

七、总结

这一篇就展示了一个项目从零到打 docker 镜像、运行、推送到远程仓库一整套流程。

就可以轻松、快捷的部署一个新项目。

清山绿水始于尘,博学多识贵于勤。
微信公众号:「清尘闲聊」。
欢迎一起谈天说地,聊代码。