Docker部署项目并上传至镜像仓库流程
1.创建SpringBoot项目,RunDockerController要与启动项在同级包下,否则在地址栏中请求会报404
package com.wt; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class RunDockerController { @RequestMapping("/") @ResponseBody public String hello() { return "Hello, SpringBoot With Docker"; } }
2.将项目打成jar包
idea: Maven ->clean(清除) ->compile(编译) ->package(打包)
jar包在项目工作空间target目录下
3.将jar上传至服务器,在同级目录下创建Dockerfile文件
touch Dockerfile
4.编写Dockerfile文件
vim Dockerfile
# Docker image for springboot file run # VERSION 0.0.1 # Author: tao # 基础镜像使用java:8 FROM java:8 # 作者 MAINTAINER tao # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。 # 该步骤是可选的,如果涉及到文件系统的应用就很有必要了。 # /tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录。 VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD app.jar app.jar # 运行jar包 RUN bash -c 'touch /app.jar' #启动认证服务 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
5.制作镜像(注意:不要忘记 . )
docker build -t app:1.0 .
解释:
docker build命令:会根据Dockerfile里你定义好的命令进行构建新的镜像。
-t :代表要构建的镜像的tag。
. :代表当前目录,也就是Dockerfile所在的目录。
查看镜像
docker images
6.启动容器
docker run -d -p 8080:9264 app:1.0
解释:
-d :后台方式运行
-p : (小写英文p)指定容器的端口,将服务器中的8080端口映射到容器中的9264(项目中端口配置的是9264)端口
查看正在运行的容器,如下图所示
docker ps
7.通过浏览器进行访问
说明:
ip + 端口号
查看 ip 命令
ifconfig 或 ip addr
如下图所示,成功访问
8.给私有镜像库推送镜像
8.1创建私人镜像仓库(我使用的是阿里云的镜像仓库)
-
注:此处的镜像仓库指的是单个镜像
-
登录阿里云平台 https://www.aliyun.com/ -> 产品 -> 弹性计算 -> 容器服务 -> 容器镜像服务
-
-> 管理控制台
-
-> 个人实例
-
-> 镜像仓库 -> 创建镜像仓库 -> 下一步
-
-> 本地仓库 -> 创建镜像仓库
9.在执行docker前登录你的私有仓库(重要)
docker login --username=wangt98 registry.cn-hangzhou.aliyuncs.com
说明:此处的登陆密码是访问凭证中的密码
10.变更tag信息
docker tag app:1.0 registry.cn-hangzhou.aliyuncs.com/wangt98/wangt98:app_2.0
11.推送镜像上传至镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/wangt98/wangt98:app_2.0
如下图所示推送成功:
docker pull registry.cn-hangzhou.aliyuncs.com/wangt98/wangt98:app_2.0
13.导出镜像
docker save -o app.tar registry.cn-hangzhou.aliyuncs.com/wangt98/wangt98:app_2.0
14.解压镜像
docker load -i app.tar
15.删除带有tag的镜像
docker rmi registry.cn-hangzhou.aliyuncs.com/wangt98/wangt98:app_2.0