SpringBoot项目 使用Dockerfile创建镜像与容器
颜书凌 2024-06-18 12:07:03 阅读 63
一、部署准备
这里我使用的是云服务器,Centos7-Linux操作系统
需要以下环境支持
1、maven环境
2、java环境
3、springboot项目
maven环境
可以去我这个博客了解''配置MAVEN环境-CSDN博客''
java环境
可以去'' java环境变量配置-CSDN博客''
springboot项目
先来简单创建一个springboot项目
一、进入IDEA的终端
使用mvn clean
日志中有BUILD SUCCESS就算是成功了
然后使用打包命令 mvn package
完成之后你的target目录下会后会生成一个jar包
右击新建一个dockerfile文件
来简单介绍一下dockerfile文件
DockerFile是用来构建Docker镜像的文本文件,是一条条构建镜像所需要的指令和参数构成的脚本
DockerFile内容基础知识
1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数
2、指令按照从上向下,顺序执行
3、#表示注释
每个指令都会创建一个新的镜像层并且对于镜像进行提交
1、Docker执行DockerFile的大致流程
2、Docker从基础镜像运行一个容器
3、执行一条指令并且对于容器做出修改
4、执行类似docker commit的操作提交一个新的镜像层
5、Docker再基于刚提交的镜像运行一个新的容器
6、执行DockeFile 中的下一条指令直到所有指令都执行完成
以下是一些dockerfile文件中的命令
FROM :指定基础镜像 MAINTAINER :维护者信息 RUN :构建镜像时所需要执行的命令 CMD :用于容器在真正运行后所需要执行的命令,CMD 和 RUN 其实都是执行命令,但是 CMD 用于最后面 注:每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。 ENTRYPOINT :其实和 CMD 差不多,具体区别:CMD # 指定容器启动时要执行的命令,只有最后一个会生效,可被替代 ;ENTRYPOINT # 指定容器启动时 要执行的命令,可以追加命令。注:每个 Dockerfile 只能有一条 ENTRYPOINT命令,如果指定了多条 ENTRYPOINT 命令,只有最后一条会被执行。 ADD :复制文件或目录到容器,如果是压缩文件,会自动解压 COPY :拷贝文件到容器内,与 ADD 一样但不能解压 LABEL :用于为镜像添加元数据,一个标识 ENV :设置环境变量 EXPOSE :指定于外界交互的端口 VOLUME :文件挂载,容器与宿主机之间的文件共享功能,等同于 docker run 时的参数-v WORKDIR :工作目录相当于 cd USER :指定运行容器时的用户名ARG :设置变量 ONBUILD :该指令只有在当该镜像被用作其他镜像的基础镜像时,才会生效
FROM 我们这里去阿里云容器镜像去找openjdk
这里根据自己的jdk版本进行选择
小伙伴们可以复制下面这个,然后简单更改成自己的项目信息就可以使用了
# 可以从阿里云的容器镜像服务中 找到openjdk,选择相对应的版本FROM anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/openjdk:17-8.6# 作者LABEL authors="Shuling Yan"# 构建镜像时所需要执行的命令,这里作者是在容器内部创建了一个工作目录RUN mkdir "/home/test"# 这里就是进入创建好的目录WORKDIR "/home/test"# 将打包后的jar包复制到指定目录(这里我是复制到了创建好的工作目录)下,并重命名COPY ./yanshuling-0.0.1-SNAPSHOT.jar /home/test/yuan.jar# 运行命令 CMD ["java","-jar","/home/test/yuan.jar"]
这里作者使用的是FinalShell来操作,将打包好的jar包和dockerfile文件上传到自己新建好的目录
进入主目录
cd /#进入主目录
创建文件夹
mkdir yuan
进入自己创建好的目录
用的最多的一种方式
docker build -t 镜像名:tag .
参数用的比较多的就是
-t:给镜像打标签-f:指定某个文件来构建镜像,不指定的话那必须是默认的Dockerfile,名字可以通过-f来更改–target:指定阶段构建,对应多阶段构建的场景
使用 docker build -t server:1.0.0 .#打成镜像 -t是给他指定一个标签
注:后面的点不要忘记了
#docker build 最后的 . 号,其实是在指定镜像构建过程中的上下文环境的目录
docker images 查看一下镜像,已经可以看到我们所构建好的镜像了
然后使用启动容器的命令运行完之后,项目也就在服务器上部署完成了
docker run: 创建一个新的容器并运行
-d:后台运行容器,并返回容器ID
--name:为容器指定一个名称
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口。我这里使用的是8080,小伙伴们可以使用别的,但是别忘记了在服务器防火墙哪里一定要将这个端口开放,不然是访问不了的
最后的server:1.0.0使用的就是我们当时构建好的镜像
我们使用docker ps 查看一下这个容器是否运行正常
这里的up状态说明容器启动成功!
我们可以去通过服务器ip+刚才指定的端口,加自己的方法上的路径就可以访问了
和我们在idea中写好的代码一样
至此就结束啦,希望这个可以帮到你们
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。