Docker 镜像构建:Python & Node

简介: Docker 镜像构建:Python & Node

在进行 Python 开发时,建议使用 pipenv 进行包管理,使用 node 中的 pm2 进行应用监控。本文将会简述如何构建一个 Python + Node + pipenv + pm2 环境的镜像。



01


构建镜像


编写 Dockerfile 文件如下所示:


选择官方的 Python3.7 基础镜像,通过 pip3 安装 pipenv ,安装 node v10.x 稳定版本,然后通过 npm 安装 pm2 ,vim 是我常使用的工具,所以这里一起安装了。


构建镜像,命名为 python-node ,tag 为 1.0.0:

docker build -t  python-node:1.0.0 .

执行此命令需要注意的是,最后的符号 . 指向的是 Dockerfile 文件所在的目录,如果 Dockerfile 文件就在当前执行环境的目录下,那么一个 . 就可以了,如果不是则需要替换成 Dockerfile 文件的实际目录。



02


镜像仓库


上一步成功构建了一个 Python + Node + pipenv + pm2 环境的镜像,对应用程序而言,此环境完全可以是通用的,因此我们在构建具体应用的镜像时可以直接将其作为基础镜像,下面我们将这个基础镜像存放到 Docker Hub 镜像仓库中。


1、设置此基础镜像的 tag :

需要注意的是 wangying/python-node:latest 中的

  • wangying 是我的 Docker Hub 用户名。
  • python-node 是 Docker Hub 上的 repository 名称。
  • latest 是 repository 这个镜像的 tag 。


2、登录 Docker Hub:

docker login

3、将镜像推送到仓库:

执行之后就会成功将此镜像推送到仓库中,python-node 这个 repository 如果不存在则会自动创建。



03


自动化构建


上一步中构建镜像,打 tag ,然后推送到仓库都需要手动输命令,改动一次就得重来一遍这太麻烦了,我希望能够自动化去构建,正好 Docker Hub 提供了与 GitHub 相连的自动化构建方式。


1、登录 Docker Hub 进入 Account Settings -> Linked Accounts ,授权关联你的 GitHub 账户:

2、创建 GitHub 相关 repository 仓库,这里的示例命名为 docker-images 。


3、在 Docker Hub 创建 repository 时设置 Build Settings ,关联 GitHub 上的 repository :


或者在已经创建好的 Docker Hub repository 中重新设置 Build:


4、完成了 Docker Hub 与 GitHub 的自动化构建关联,只要我们本地修改完 Dockerfile 文件然后 push 到 GitHub 上这个关联的 repository,那么 Docker Hub 就会自动去拉取 GitHub 上最新的 Dockerfile 文件然后进行构建。原理也很简单,其实就是利用了 GitHub 提供的 webhook 功能。



04


构建应用镜像


构建了基础镜像并且推送到了镜像仓库中,我们就可以基于此构建具体应用程序的镜像:


指定基础镜像,设置工作目录,复制项目文件,暴露应用端口,安装项目依赖库,最后通过 CMD 指定容器启动时自动通过 pm2 部署应用服务,需要注意的是这里不能使用 pm2 而必须使用 pm2-runtime ,另外 pm2.json 是我自己的 pm2 配置文件,这个可以随便弄,一般默认是 ecosystem.config.js 。





结语


本文的内容就是这么多,其实就是解决一个问题:构建镜像。

目录
相关文章
|
14天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
18天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
650 29
|
10天前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
14天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
20天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
98 2
|
6天前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
14天前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
|
14天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
50 0
|
14天前
|
JavaScript 前端开发 NoSQL
深入浅出:使用Node.js构建RESTful API
【10月更文挑战第35天】在数字时代的浪潮中,后端技术如同海洋中稳固的灯塔,为前端应用提供数据和逻辑支撑。本文旨在通过浅显易懂的方式,带领读者了解如何利用Node.js这一强大的后端平台,搭建一个高效、可靠的RESTful API。我们将从基础概念入手,逐步深入到代码实践,最终实现一个简单的API示例。这不仅是对技术的探索,也是对知识传递方式的一次创新尝试。让我们一起启航,探索Node.js的奥秘,解锁后端开发的无限可能。
|
16天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
下一篇
无影云桌面