Docker部署springboot项目
准备工作
一,Springboot项目打成jar包
二,登录linux系统,在/usr/local文件夹内创建DockerFile文件夹,再创建dockerfile文件,文件信息如下
1 | # 基础镜像使用java |
解释下这个配置文件:
VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录项目的 jar 文件作为 “app.jar” 添加到容器的ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。
三,上传第一步的jar包到DockerFile文件夹下,与dockerfile文件同级
制作镜像
linux环境下进入到/usr/local/DockerFile文件夹下,使用docker build命令构建镜像,记得最后有个”.”
1 | docker build -t 自定义镜像名称(比如springbootdemo) . |
docker build命令:用于使用 Dockerfile 创建镜像;
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
“.”的意思:是在指定镜像构建过程中的上下文环境的目录,就是调用当前同级目录下的dockerfile文件,如果需要调用其他目录下的dockerfile文件,可以使用 -f 命令
启动容器
一,查看本地镜像
docker images命令,查看当前环境下的全部镜像
二,启动容器
1 | docker run -d -p 8080:8085 --name springbootdemo |
docker run命令:创建一个新的容器并运行一个命令
-d:后台运行容器,并返回容器ID;
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
–name: 为指定容器的名称
至此,项目启动成功,访问宿主机的8080端口就能转发到容器中项目的8085端口
重新部署
一,查看运行中的容器id
docker ps -a
-a: 显示所有的容器,包括未运行的;以便后面停止和删除
二,停止容器
docker stop和docker kill命令都可以停止容器
docker kill 容器id 或者 docker stop 容器id
Docker stop和Docker kill返回并不意味着容器真正退出成功了,必须通过docker ps查看。
三,删除容器和镜像
docker rm 容器id
容器id还是第一步docker ps -a命令查询出来的那个id
使用docker images命令查询镜像id,再通过docker rmi命令删除镜像
docker rmi 镜像id
四,重新部署
重新打jar包,上传,执行【制作镜像,启动容器】步骤
至此,重新部署成功