使用docker打包项目的完整流程记录(小白可懂)

 更新时间:2025年04月24日 08:33:26   作者:秋窗7  
这篇文章主要介绍了使用docker打包项目的完整流程,并详细解释了Dockerfile、构建镜像和创建容器的步骤,通过实战项目大家可以掌握基本的Docker打包流程,需要的朋友可以参考下

前言

这并不完全是一个正经的教程,而是根据我的学习经验总结出来的一个模版,大家可以尝试一下,权当了解一下项目打包的流程。

克隆演示项目

我在我的GitHub仓库里已经上传了演示项目,大家可以使用以下命令克隆到本地:

git clone git@github.com:Yuanyi362102/learn-docker.git
cd learn-docker

编写Dockerfile文件

Dockerfile文件是用于构建镜像的关键文件,我们在执行创建镜像的指令时,docker会自动寻找指定目录下的Dockerfile文件,并读取和执行相关指令。

现在让我们用VScode打开这个项目,可以看到项目结构如图所示:

打开Dockerfile文件,查看里面的内容如下:

FROM  node:11
ADD . /app
WORKDIR /app
RUN npm install && npm install -g nodemon
CMD nodemon app.js  

简单解释一下。

  • FROM语句代表我们要创建的镜像是基于基础镜像Node,版本是11。
  • ADD语句代表将当前项目的根目录,也就是TEST目录添加到容器的/app目录下
  • WORKDIR指定了工作目录是/app
  • RUN代表在容器创建(对应docker build阶段)的过程中执行的命令,npm install 意思是安装项目依赖,npm install -g nodemon 意思是全局安装nodemon,这个工具可以帮助我们在后续更新项目代码后无需重启容器就能直接看到更改效果。
  • CMD代表在容器运行时执行(对应于docker run阶段)的命令,意思是运行app.js这个文件

构建镜像

使用下面这行命令构建镜像:

docker build -t my-node-app:v1 .

解释一下,这条命令的主干其实就是docker build my-nder-app,意思是构建一个叫做“my-node-app”的镜像,-t是可选参数代表创建tag,即创建标签,“:v1"代表标签为"v1”,最后的"."代表Docker会从当前目录读取Dockerfile文件。

创建容器

使用下面这行命令来创建容器:

 docker run -p 9564:9000 --name testProject -v path:/app my-node-app:v1

这条指令的核心其实就是docker run my-node-app:v1, “-p"代表port,指定容器的9000端口映射到宿主机的9654端口,”--name"是将创建的镜像名称指定为testProject,“-v"指定挂载的数据卷volume,”path“是你项目的绝对路径(根据你的电脑实际情况而定),”:app"就是将刚才Dockerfile中在容器里创建的app目录(同时也是工作目录)映射到数据卷,这样当容器关闭之后,数据就可以保存到本地,同时项目在本地的修改也能即时反馈给容器。

检验效果

如果你成功创建容器,你的终端将会输出如图所示的回显信息:

打开docker的桌面客户端(没有的话可以去安装一下,安装链接:Docker官网下载地址),可以看到以下画面:

点击链接,会跳转到项目地址,你将会看到以下画面

在地址栏,分别尝试输入localhost:9564/sayhellolocalhost:9564/sayok,可以看到如下画面:

在本地项目里面修改一下项目文件,看是否可以不用重启容器就生效

再次访问localhost:9564,会看到返回的信息已经改变(如果你没有在地址栏重新输入地址,而是在旧页面中,要点击浏览器刷新按钮才会更改)。

尾声

至此,简单项目打包的流程就结束了,事实上真正的项目打包肯定会涉及到多个容器,多个容器项目部署又要用到docker-compose相关的知识

相关文章

  • Docker login和logout的使用

    Docker login和logout的使用

    本文主要介绍了Docker login和logout的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Docker 镜像、容器、仓库的概念及应用详解

    Docker 镜像、容器、仓库的概念及应用详解

    这篇文章主要介绍了Docker 镜像、容器、仓库的概念及应用详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • Docker容器时区调整操作

    Docker容器时区调整操作

    这篇文章主要介绍了Docker容器时区调整操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker Runc容器生命周期详细介绍

    Docker Runc容器生命周期详细介绍

    这篇文章主要介绍了Docker Runc容器生命周期详细介绍的相关资料,文章分析runc的容器生命周期的抽象、内部实现以及状态转换图。理解了runc的容器状态转换再对比理解docker client提供的容器操作命令的语义会更容易些
    2016-12-12
  • Docker Kill/Pause/Unpause命令使用与区别小结

    Docker Kill/Pause/Unpause命令使用与区别小结

    本文详细介绍了Docker中的三个重要命令,kill、pause和unpause,这些命令在管理和操作运行中的容器时非常有用,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • docker安装及docker中nginx配置方法

    docker安装及docker中nginx配置方法

    这篇文章主要介绍了docker安装及docker中nginx配置方法,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Docker部署MinIO镜像的方法(保姆级教程)

    Docker部署MinIO镜像的方法(保姆级教程)

    本文主要介绍了使用Docker部署MinIO镜像,包括创建挂载目录、运行MinIO容器的参数解析、使用Compose运行MinIO容器等,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • docker如何部署tomcat应用

    docker如何部署tomcat应用

    这篇文章主要介绍了docker如何部署tomcat应用问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • IDEA部署Docker到WSL2的详细过程

    IDEA部署Docker到WSL2的详细过程

    这篇文章主要介绍了IDEA 部署 Docker 到 WSL2的过程详解,本地环境Windows10+WSL2(Ubuntu),具体操作过程跟随小编一起看看吧
    2021-07-07
  • Docker拉镜像报错error pulling image configuration: unknown blob

    Docker拉镜像报错error pulling image configuration:

    这篇文章主要介绍了Docker拉镜像报错error pulling image configuration: unknown blob的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论