使用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相关的知识

相关文章

  • Ubuntu16.04Docker的CS模式详细介绍

    Ubuntu16.04Docker的CS模式详细介绍

    这篇文章主要介绍了Ubuntu16.04Docker的CS模式详细介绍的相关资料,这里对Docker CS模式图文详细介绍,需要的朋友可以参考下
    2016-12-12
  • 清理Docker磁盘空间的几种有效方法

    清理Docker磁盘空间的几种有效方法

    随着Docker的广泛使用,管理Docker占用的磁盘空间变得越来越重要,长时间运行Docker环境,未使用的容器、镜像、卷和网络等会逐渐积累,占用大量磁盘空间,本文将介绍几种清理Docker磁盘空间的有效方法,需要的朋友可以参考下
    2024-08-08
  • 使用Docker容器化Flask应用的简单示例

    使用Docker容器化Flask应用的简单示例

    在当今的软件开发中,容器化技术已经变得不可或缺,Docker 作为容器化领域的佼佼者,为开发者提供了一种高效、便捷的方式来部署和运行应用程序,本文将通过一个简单的 Flask 应用示例,展示如何使用 Docker 将 Python 应用程序容器化,需要的朋友可以参考下
    2025-09-09
  • Docker查看镜像的Dockerfile(docker history和docker inspect命令)

    Docker查看镜像的Dockerfile(docker history和docker inspec

    这篇文章主要给大家介绍了关于Docker查看镜像的Dockerfile的相关资料,文中主要运用的是docker history和docker inspect命令,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • 修改Docker默认存储路径的步骤详解

    修改Docker默认存储路径的步骤详解

    随着Docker技术的广泛应用,它极大地简化了复杂项目的部署与维护流程,仅凭单一镜像即可轻松运行,然而,随着数据量不断增长,Docker的默认数据存储方式可能逐渐成为挑战,本文给大家介绍了如何修改Docker默认存储路径,解决系统盘占用90%+问题,需要的朋友可以参考下
    2024-09-09
  • Docker镜像瘦身之从GB到MB的优化实践教程

    Docker镜像瘦身之从GB到MB的优化实践教程

    一个未经优化的 Node.js 应用镜像可能达到 900MB 以上,而实际上运行该应用只需要几十MB的资源,这时我们就需要瘦身 Docker 镜像,下面小编就和大家详细介绍一下优化Docker镜像大小的技巧吧
    2026-04-04
  • 使用docker容器来构建前端项目过程

    使用docker容器来构建前端项目过程

    文章介绍了如何使用Docker容器来解决前端项目打包问题,包括构建镜像、设置环境变量、加速构建过程以及如何将node_modules直接打包到镜像中,通过这种方式,可以确保每次打包的环境一致,避免因环境差异导致的打包失败
    2026-03-03
  • Docker中Cgroup资源配置的实现

    Docker中Cgroup资源配置的实现

    Cgroup不仅可以限制被namespace 隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等,本文主要介绍了Docker中Cgroup资源配置的实现,感兴趣的可以了解一下
    2023-09-09
  • 在云服务器上基于docker安装jenkins的实现步骤

    在云服务器上基于docker安装jenkins的实现步骤

    本文主要介绍了在云服务器上基于docker安装jenkins的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 设置docker的定时关闭和启动方式

    设置docker的定时关闭和启动方式

    文章介绍了在Docker中设置容器定时关闭和启动的两种方法:使用系统级定时任务(如cron)和使用Docker特定的解决方案,通过配置CronJob、DockerCompose或DockerSwarm,可以实现容器的定时启动和关闭
    2024-12-12

最新评论