12因子应用文档(二)

虚树磷火
• 阅读 1329

II. 依赖

显式声明与隔离依赖

大部分编程语言提供一套分发支持库的打包系统, 比如Perl的CPAN或Ruby的Rubygems。从打包系统安装的二方库可以在系统层面(众所周知的“site packages”)或包含应用的目录区域(众所周知的“vendoring”或“bundling”)。

一个12因子应用决不依赖隐式的系统级包。它会声明所有依赖项,完整并精确地,通过依赖声明的清单。更进一步,它使用一种依赖隔离工具来保证执行期没有隐式的依赖被“泄露”到周围的系统。显式声明的依赖规范会被无差别的应用到开发环境与生产环境。

例如,Ruby的Gem Bundler提供Gemfile 文件格式作为依赖生命,bundle exec作为依赖隔离。Python有两个不同的工具来做这些步骤 — Pip用来声明作为隔离目的的Virtualenv。 就算是C也有为依赖声明的Autoconf,和提供依赖隔离的静态链接。不管什么工具链,依赖声明与隔离都必须一起使用— 只有一个或另一个不能满足12因子的需要。

一个显式声明依赖的好处是能简化开发人员对新应用的设置工作。新开发者可以从应用代码库检出代码到他们的开发机器,前置条件只是安装过语言的运行时及依赖管理器。他们可以用build命令设置好运行程序所需的所有东西。例如,Ruby/Bundler 的build命令是bundle install,Clojure/Leiningen的是lein deps。

12因子应用也不依赖任何隐式的其他系统工具的依赖。比如shell命令ImageMagick或curl。这些工具当然可能存在在许多或大部分系统中,但这并不保证他们会存在在所有系统或应用以后可能运行的系统,或以后的系统版本能否兼容现有版本的应用。如果应用需要使用外部的系统工具,这个工具需要被打包进应用里。

原文地址: https://12factor.net/12factor...

点赞
收藏
评论区
推荐文章
芝士年糕 芝士年糕
2年前
Docker容器简介及命令
使用Linux最好还是整个服务器,买太贵了,建议租一个,我用的是docker简述Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可
皮卡皮卡皮 皮卡皮卡皮
4年前
webpack 基本配置
概念本质上,webpack是一个现代JavaScript应用程序的静态模块打包器(modulebundler)。当webpack处理应用程序时,它会递归地构建一个依赖关系图(dependencygraph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。安装确保安装了nodejs项目文件环境cd
Jacquelyn38 Jacquelyn38
4年前
Webpack学习整理集锦【从最基础的demo入手,自己实现一个脚手架 】
前言本质上,webpack是一个现代JavaScript应用程序的静态模块打包器(modulebundler)。当webpack处理应用程序时,它会递归地构建一个依赖关系图(dependencygraph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。开源网址https://github.com/maomi
Stella981 Stella981
3年前
Linux上如何查看Deb和RPM软件包的更新日志
导读当一个程序或库打包成Deb或RPM软件包后会有一些元数据文件包含在其中,其中之一就是changelog文件,它记录了软件包每次更新后发生了什么变化。因此,如果你想找出你安装或更新的软件包发生了什么变化,我们可以查看软件包的更新日志(changelog)。本文将介绍如何查看基于Debian系统或红帽系统软件包的更新日志。查看Deb软件
Easter79 Easter79
3年前
Spring知识点提炼
1\.Spring框架的作用清理:Spring是轻量级的,基本的版本大小为2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring包含并管理应用中对象
Stella981 Stella981
3年前
Docker镜像优化:从1.16GB到22.4MB
Docker是一个供软件开发人员和系统管理员使用容器构建、运行和与分享应用程序的平台。容器是在独立环境中运行的进程,它运行在自己的文件系统上,该文件系统是使用docker镜像构建的。镜像中包含运行应用程序所需的一切(编译后的代码、依赖项、库等等)。镜像使用Dockerfile文件定义。术语dockerization或containeriz
Easter79 Easter79
3年前
SwiftUI 跨组件数据传递
作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言众所周知,SwiftUI的开发模式与React、Flutter非常相似,即都是声明式UI,由数据驱动(产生)视图,视图也会与数据自动保持同步,框架层会帮你处理“绑定”的问题。在声明式UI中不存在命令式地让一个视图变成xxx
胖大海 胖大海
2年前
Docker容器简介及命令
使用Linux最好还是整个服务器,买太贵了,建议租一个,我用的是3A服务器docker简述Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的
什么是多云互联
什么是?云是云计算领域的新概念。它是指通过互联网在同一台物理服务器上同时运行多个操作系统和数据库系统,从而实现不同应用之间数据的无缝迁移和共享。在传统的企业it系统中,通常有一个或多个独立的应用程序或服务,为用户提供不同的功能和服务。比如:一个网站,一套办
镜像供应链安全
容器技术重塑了整个软件供应链。容器镜像将应用及其所依赖项打包,从而使应用可以在不同的计算环境之间快速、可靠地运行。容器镜像已经成为了应用分发的标准。镜像供应链安全应支持:
虚树磷火
虚树磷火
Lv1
于过往岁月里,见过朝阳初升。
文章
3
粉丝
0
获赞
0