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公用镜像仓库测试。
登录官方账号
需要到官网注册一个账户:
注册好之后才能给官方仓库推送镜像。
在本地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