SpringBoot项目 使用Dockerfile创建镜像与容器

这篇具有很好参考价值的文章主要介绍了SpringBoot项目 使用Dockerfile创建镜像与容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、部署准备

这里我使用的是云服务器,Centos7-Linux操作系统

需要以下环境支持

1、maven环境

2、java环境

3、springboot项目

maven环境

可以去我这个博客了解''配置MAVEN环境-CSDN博客''

java环境

可以去'' java环境变量配置-CSDN博客''

springboot项目

先来简单创建一个springboot项目

SpringBoot项目 使用Dockerfile创建镜像与容器,java

一、进入IDEA的终端
使用mvn clean

SpringBoot项目 使用Dockerfile创建镜像与容器,java

日志中有BUILD SUCCESS就算是成功了

SpringBoot项目 使用Dockerfile创建镜像与容器,java

然后使用打包命令 mvn package

SpringBoot项目 使用Dockerfile创建镜像与容器,java

完成之后你的target目录下会后会生成一个jar包

SpringBoot项目 使用Dockerfile创建镜像与容器,java

右击新建一个dockerfile文件

SpringBoot项目 使用Dockerfile创建镜像与容器,java

来简单介绍一下dockerfile文件

DockerFile是用来构建Docker镜像的文本文件,是一条条构建镜像所需要的指令和参数构成的脚本

DockerFile内容基础知识
1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数
2、指令按照从上向下,顺序执行
3、#表示注释


每个指令都会创建一个新的镜像层并且对于镜像进行提交
1、Docker执行DockerFile的大致流程
2、Docker从基础镜像运行一个容器
3、执行一条指令并且对于容器做出修改
4、执行类似docker commit的操作提交一个新的镜像层
5、Docker再基于刚提交的镜像运行一个新的容器
6、执行DockeFile 中的下一条指令直到所有指令都执行完成

以下是一些dockerfile文件中的命令

  1. FROM :指定基础镜像
  2. MAINTAINER :维护者信息
  3. RUN :构建镜像时所需要执行的命令
  4. CMD :用于容器在真正运行后所需要执行的命令,CMD 和 RUN 其实都是执行命令,但是 CMD 用于最后面 注:每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。
  5. ENTRYPOINT :其实和 CMD 差不多,具体区别:CMD # 指定容器启动时要执行的命令,只有最后一个会生效,可被替代 ;ENTRYPOINT # 指定容器启动时 要执行的命令,可以追加命令。注:每个 Dockerfile 只能有一条 ENTRYPOINT命令,如果指定了多条 ENTRYPOINT 命令,只有最后一条会被执行。
  6. ADD :复制文件或目录到容器,如果是压缩文件,会自动解压
  7. COPY :拷贝文件到容器内,与 ADD 一样但不能解压
  8. LABEL :用于为镜像添加元数据,一个标识
  9. ENV :设置环境变量
  10. EXPOSE :指定于外界交互的端口
  11. VOLUME :文件挂载,容器与宿主机之间的文件共享功能,等同于 docker run 时的参数-v
  12. WORKDIR :工作目录相当于 cd
  13. USER :指定运行容器时的用户名ARG :设置变量
  14. ONBUILD :该指令只有在当该镜像被用作其他镜像的基础镜像时,才会生效

FROM 我们这里去阿里云容器镜像去找openjdk

SpringBoot项目 使用Dockerfile创建镜像与容器,java

SpringBoot项目 使用Dockerfile创建镜像与容器,java

这里根据自己的jdk版本进行选择

SpringBoot项目 使用Dockerfile创建镜像与容器,java

SpringBoot项目 使用Dockerfile创建镜像与容器,java

小伙伴们可以复制下面这个,然后简单更改成自己的项目信息就可以使用了

# 可以从阿里云的容器镜像服务中 找到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文件上传到自己新建好的目录

SpringBoot项目 使用Dockerfile创建镜像与容器,java

进入主目录

cd /
#进入主目录

创建文件夹

mkdir yuan

SpringBoot项目 使用Dockerfile创建镜像与容器,java

进入自己创建好的目录

SpringBoot项目 使用Dockerfile创建镜像与容器,java

  • 用的最多的一种方式

    docker  build  -t 镜像名:tag  . 
    
  • 参数用的比较多的就是

    • -t:给镜像打标签
    • -f:指定某个文件来构建镜像,不指定的话那必须是默认的Dockerfile,名字可以通过-f来更改
    • –target:指定阶段构建,对应多阶段构建的场景
使用 docker build -t server:1.0.0 .
#打成镜像 -t是给他指定一个标签

注:后面的点不要忘记了

#docker build 最后的 . 号,其实是在指定镜像构建过程中的上下文环境的目录

SpringBoot项目 使用Dockerfile创建镜像与容器,java

docker images 查看一下镜像,已经可以看到我们所构建好的镜像了

SpringBoot项目 使用Dockerfile创建镜像与容器,java

然后使用启动容器的命令运行完之后,项目也就在服务器上部署完成了

SpringBoot项目 使用Dockerfile创建镜像与容器,java

docker run: 创建一个新的容器并运行

-d:后台运行容器,并返回容器ID

--name:为容器指定一个名称

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口。我这里使用的是8080,小伙伴们可以使用别的,但是别忘记了在服务器防火墙哪里一定要将这个端口开放,不然是访问不了的

最后的server:1.0.0使用的就是我们当时构建好的镜像

我们使用docker ps 查看一下这个容器是否运行正常

这里的up状态说明容器启动成功!

SpringBoot项目 使用Dockerfile创建镜像与容器,java

我们可以去通过服务器ip+刚才指定的端口,加自己的方法上的路径就可以访问了

SpringBoot项目 使用Dockerfile创建镜像与容器,java

和我们在idea中写好的代码一样

SpringBoot项目 使用Dockerfile创建镜像与容器,java

至此就结束啦,希望这个可以帮到你们文章来源地址https://www.toymoban.com/news/detail-843984.html

到了这里,关于SpringBoot项目 使用Dockerfile创建镜像与容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker容器:docker镜像的创建及dockerfile

    创建镜像有三种方法:基于现有镜像创建、基于本地模板创建及基于dockerfile创建 1.1 启动镜像 1.2 生成新镜像 2.1 OPENVZ 下载模板 2.2 导入容器生成镜像 3.1 dockerfile结构及分层 (1)dockerfile结构大致分为4个部分 基础镜像信息 维护者信息 镜像操作指令 容器启动时执行指令 Dockerfil

    2024年02月11日
    浏览(25)
  • Docker容器:docker数据管理、镜像的创建及dockerfile案例

    因为数据写入后如果停止了容器,再开启数据就会消失,使用数据管理的数据卷挂载,实现了数据的持久化,重启数据还会存在;还有一种方式,容器之间共享文件即相当于有个备份,也会解决停止容器后数据消失的问题。 管理 Docker 容器中数据主要有两种方式:数据卷(

    2024年02月12日
    浏览(23)
  • Docker容器与虚拟化技术:Docker镜像创建、Dockerfile实例

    目录 一、理论 1.Docker镜像的创建方法 2.Docker镜像结构的分层 3.Dockerfile 案例 4.构建Systemctl镜像(基于SSH镜像) 5.构建Tomcat 镜像 6.构建Mysql镜像 二、实验 1.Docker镜像的创建 2. Dockerfile 案例 3.构建Systemctl镜像(基于SSH镜像) 三、问题 1.nginx网页打不开  2.Apache容器启动一直为Ex

    2024年02月12日
    浏览(24)
  • docker容器:docker镜像的三种创建方法及dockerfile案例

    目录 一、基于现有镜像创建 1、创建启动镜像 2、生成新镜像 二、基于本地模板创建  1、OPENVZ 下载模板 2、导入容器生成镜像 三、基于dockerfile创建  1、dockerfile结构及分层 2、联合文件系统 3、docker镜像加载原理 4、dockerfile操作常用的指令 (1)FROM指令 (2)MAINTAINER 指令 (3)RUN指令

    2023年04月20日
    浏览(33)
  • Docker容器化技术(使用Dockerfile制作镜像)

    Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。 1、Docker 镜像为什么分层 镜像分层最大的一个好处就是共享资源。 比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在

    2024年03月19日
    浏览(33)
  • 使用docker-file 将springboot项目打成镜像,发布成容器服务

    [root@localhost ~]# uname -r 3.10.0-862.el7.x86_64 [root@localhost ~]# yum install docker [root@localhost export]# systemctl start docker [root@localhost export]# docker -v Docker version 1.13.1, build 7d71120/1.13.1 [root@localhost export]# systemctl status docker ● docker.service - Docker Application Container Engine    Loaded: loaded (/usr/lib/systemd

    2024年02月13日
    浏览(25)
  • Docker应用-使用Dockerfile创建镜像

    Dockerfile是由一行行命令语句组成并且支持以#开头的注释行。一般而言Dockerfile分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时的执行指令。比如: 其中,一开始必须指明所基于的镜像名称,接下来一般会说明维护者的信息。后面是镜像的操作指令,例

    2024年02月21日
    浏览(27)
  • 使用Dockerfile来构建服务的镜像,并部署在容器中

    在项目的根目录下,创建Dockerfile 基础写法: 对上面的每一行进行详细说明: (1) FROM openjdk:8-jre-slim 基础镜像 【这个镜像包含了 OpenJDK 8 (Java 运行环境)和一个精简版的操作系统。】 (2) MAINTAINER Forrest 镜像的作者 (3) ENV PARAMS=\\\"\\\" TZ=PRC 1)设置环境变量 2)PARAMS表示传给m

    2024年01月22日
    浏览(22)
  • 使用dockerfile手动构建JDK11镜像运行容器并校验

    Docker官方维护镜像的公共仓库网站 Docker Hub 国内无法访问了,大部分镜像无法下载,准备逐步构建自己的镜像库。【转载aliyun官方-容器镜像服务 ACR】Docker常见问题 阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托

    2024年02月03日
    浏览(23)
  • windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

    这里使用 pipreqs 进行依赖库的识别。使用 pipreqs 可以自动检索到当前项目下的所有组件及其版本,并生成 requirements.txt 文件。相比直接用pip freeze 命令,避免将整个python环境的依赖包写入。 在项目的当前目录中执行 pipreqs ./ --encoding=utf8 --force 这里使用的是一个基于flask项目,

    2023年04月08日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包