Docker打包和运行SpringBoot项目

Docker打包和运行SpringBoot项目

首先已经有一个可以运行的SpringBoot项目,然后需要把它包装成Docker容器。

参考文档:https://dzone.com/articles/spring-boot-docker-deployment

编写Dockerfile

在项目根目录下新建Dockerfile文件,编写内容,参考官方文档

# Start with base image
FROM openjdk:11
# Add Maintainer Info
LABEL maintainer="fugary"
# Add a temporary volume
VOLUME /tmp
# Expose Port 8085
EXPOSE 8085
# Application Jar File
ARG JAR_FILE=target/simple-boot-douban-api-0.0.1-SNAPSHOT.jar
# Add Application Jar File to the Container
ADD ${JAR_FILE} simple-boot-douban-api.jar
# Run the JAR file
ENTRYPOINT ["java", "-jar", "/simple-boot-doubern-api.jar"]

打包应用

在应用目录下打包

mvn clean package

使用Docker构建

docker build -t simple-boot-douban-api .

构建成功后查看

# 查看镜像列表
docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
simple-boot-douban-api   latest              e743a4dd4316        41 minutes ago      665MB
openjdk                  11                  e782567c0965        3 weeks ago         648MB
# 删除镜像
docker image rm e743a4dd4316

运行Docker容器

目前应用的端口是8085,可以映射本地的8085端口启动

docker run -it -p 8085:8085 simple-boot-douban-api

启动成功后可以访问了,不过在Windows下需要输入另外的IP地址来访问,因为Windows下的Docker是使用的Liunx虚拟机来启动的Docker,因此需要访问Linux虚拟机的IP地址,通常是192.168.99.100,我们的应用的地址就是http://192.168.99.100:8005/xxxx

查看docker容器进程:

# 容器进程列表
docker ps
# 杀掉docker容器
docker kill be4ac62446a1
# 进入启动的容器的shell
docker exec -it 1bcf334703b1 /bin/bash
# 清理<none>镜像,要先清理停止的container,prune操作是批量删除操作,需要确认,加-f强制清理不用确认
docker container prune
docker image prune
# 清理卷
docker volume prune

进程列表(端口映射也能看到):

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
89584c2be270 simple-boot-douban-api "java -jar /simple-b" 5 minutes ago Up 6 minutes 0.0.0.0:8085->8085/tcp beautiful_bassi

推送到镜像仓库

目前已经有simple-boot-douban-api镜像了,可以推送到镜像仓库

通常公司会搭建自己的镜像仓库,可以使用docker-registry或者harbor搭建私服,这里使用docker hub公用镜像仓库测试。

登录官方账号

需要到官网注册一个账户:

https://hub.docker.com/

注册好之后才能给官方仓库推送镜像。

在本地Linux登录docker:

docker login
# 输入用户名和密码之后就提示登录成功:Login Succeeded

修改TAG并推送

要推送到官方镜像,需要给镜像打TAG标记,格式如下:

# docker tag 镜像名 用户名/镜像名
docker tag simple-boot-douban-api fugary/simple-boot-douban-api
# docker push 注册用户名/镜像名
docker push fugary/simple-boot-douban-api

查询镜像

推送完成之后可以在官方镜像仓库中搜到该镜像:

查看:https://hub.docker.com/search?q=simple-boot-douban-api&type=image

image-20210818171529958

上一篇
下一篇