一、新建一个 Spring boot 项目
通过Spring 提供的脚手架 Spring Initializr 项目新建一个Java项目。
二、新建 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 镜像、运行、推送到远程仓库一整套流程。
就可以轻松、快捷的部署一个新项目。
清山绿水始于尘,博学多识贵于勤。
微信公众号:「清尘闲聊」。
欢迎一起谈天说地,聊代码。