Docker企业级应用实战-Docker部署简单的Springboot项目

初始化一个springboot项目

这里就不赘述流程了,就是新建一个最简单的web程序就行,示例代码

要求如下:

  1. 配置文件中设置一个固定端口(后面会涉及到做端口映射)
  2. 指定日志文件路径(后面设置文件夹挂载)
  3. 写一个简单的controller,支持http请求,有返回,且每请求一次有日志返回(随便打印什么)
  4. 打包之后的jar包名:springboot-study-docker

准备一个Dockfile

这里就直接用网上随便找的一个文件,其中具体配置的含义,后续写专门博文介绍

1
2
3
4
5
6
7
8
9
10
#获取base image
FROM adoptopenjdk/openjdk8:latest
#类似于执行 linux指令
RUN mkdir /opt/app
#类似于linux copy指令
COPY springboot-study-docker.jar /opt/app/
#对外端口
EXPOSE 8080
#执行命令 java -jar /opt/app/springboot-study-docker.jar
CMD ["java", "-jar", "/opt/app/springboot-study-docker.jar"]

打包docker镜像

  1. 将打好的jar包和Dockerfile放到同一固定目录
  2. 创建docker镜像
1
docker build -t springboot-study-docker .

这里稍微解释一下 build 是创建命令 ,-t 是指定target 名称, springboot-study-docker 就是镜像名称 ,.指的是在当前目录下 寻找 Dockerfile文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker build -t springboot-study-docker .
Sending build context to Docker daemon 19.33MB
Step 1/5 : FROM adoptopenjdk/openjdk8:latest
---> 48f5ba11c251
Step 2/5 : RUN mkdir /opt/app
---> Running in a936597b1b31
Removing intermediate container a936597b1b31
---> 5c324d0c1c56
Step 3/5 : COPY springboot-study-docker.jar /opt/app/
---> d3a68ecfa774
Step 4/5 : EXPOSE 8080
---> Running in 412aa5f28930
Removing intermediate container 412aa5f28930
---> 74732e01d82a
Step 5/5 : CMD ["java", "-jar", "/opt/app/springboot-study-docker.jar"]
---> Running in 62aebd0fa484
Removing intermediate container 62aebd0fa484
---> ab7c612a5d5d
Successfully built ab7c612a5d5d
Successfully tagged springboot-study-docker:latest
  1. 查看当前镜像列表
1
2
3
4
5
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot-study-docker latest ab7c612a5d5d 25 seconds ago 324MB
mysql 5.7 db39680b63ac 7 weeks ago 437MB
adoptopenjdk/openjdk8 latest 48f5ba11c251 4 months ago 305MB

运行docker镜像

1
2
docker run -it -d -p 8080:8080 -v /Users/feifuzeng/docker/demo/logs:/logs springboot-study-docker
02e6652c8202139e840bd7db206252eab9f610f2367dcdbf5fd190d2781688ba

启停容器

  1. 执行命令ps找到对应容器id
1
2
3
4
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02e6652c8202 springboot-study-docker "java -jar /opt/app/…" 4 minutes ago Up 3 seconds 0.0.0.0:8080->8080/tcp magical_khayyam
d388af485f3e mysql:5.7 "docker-entrypoint.s…" 6 weeks ago Up 5 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
  1. 停止容器(启动 重启同理)
1
docker stop 02e6652c8202

升级&替换镜像

  1. 停止正在运行的容器
1
docker stop 02e6652c8202

参数为容器id

  1. 删除容器
1
docker rm 02e6652c8202

参数为容器id

  1. 查询镜像并删除
1
docker ps -a
1
docker rmi springboot-study-docker

参数为

  1. 打包新的镜像
1
docker build -t springboot-study-docker .
  1. 运行镜像
1
docker run -it -d -p 8080:8080 -v /Users/feifuzeng/docker/demo/logs:/logs springboot-study-docker