Docker 容器内环境变量配置详解

在开发和部署前端应用程序时,我们经常需要使用环境变量来存储敏感信息,例如数据库密码、API 密钥等。Docker 作为一种流行的容器化技术,可以帮助我们轻松地管理和配置环境变量。本文将详细介绍 Docker 容器内环境变量的配置方法,以及如何在容器中使用这些变量。

Docker 容器内环境变量配置方法

Docker 容器可以使用以下方法来设置环境变量:

1. Dockerfile 中设置环境变量

可以在 Dockerfile 中使用 ENV 指令来设置环境变量。例如,以下 Dockerfile 将 NODE_ENV 环境变量设置为 production

---- --------------
--- -------------------

2. 运行时使用 -e 参数设置环境变量

可以在运行容器时使用 -e 参数来设置环境变量。例如,以下命令将 API_KEY 环境变量设置为 123456

------ --- -- -------------- ------

3. 使用容器编排工具设置环境变量

如果使用容器编排工具(例如 Docker Compose 或 Kubernetes),可以在配置文件中使用 environmentenv 属性来设置环境变量。例如,以下 Docker Compose 配置文件将 PORT 环境变量设置为 3000

-------- ---
---------
  ----
    ------ -
    ------------
      ----- ----

在容器中使用环境变量

在容器内部,可以使用以下方法来使用环境变量:

1. 在脚本中使用环境变量

您可以在脚本中使用环境变量,例如 Node.js 代码中使用 process.env 对象:

----- ---- - ---------------- -- -----

2. 在 Dockerfile 中使用环境变量

您可以在 Dockerfile 中使用 $VARIABLE_NAME 语法来引用环境变量。例如,以下 Dockerfile 在安装 Node.js 时使用 $NODE_ENV 环境变量:

---- --------------
--- -------------------
--- --- ------- -------------

示例代码

以下是一个示例 Node.js 应用程序,它使用环境变量来存储数据库密码和端口号,并使用 Docker Compose 部署:

Dockerfile

---- --------------
------- ----
---- ------------- --
--- --- ------- ------------
---- - -
--- ---------
--- ------------------
--- - ------ ------- -

docker-compose.yml

-------- ---
---------
  ----
    ------ -
    ------------
      ----- ----
      ------------ ------
    ------
      - -----------
    -----------
      - --
  ---
    ------ ---------
    ------------
      -------------------- ------
      --------------- ----
    --------
      - ----------------------
--------
  --------

index.js

----- ------- - ------------------
----- ----- - ----------------
----- --- - ---------
----- ---- - ---------------- -- ----
----- -- - ------------------------
  ----- -----
  ----- -------
  --------- ------------------------
  --------- ------
--
---------------- -- -
  -- ----- ----- ---
  ---------------------- -- -----------
--
------------ ----- ---- -- -
  --------------- --------
--
---------------- -- -- -
  ---------------- --------- -- --------------------------
--

本示例使用了三个环境变量:PORTDB_PASSWORDMYSQL_ROOT_PASSWORD。在 Dockerfile 中使用 ENV 指令设置了 PORTDB_PASSWORD 环境变量,在 Docker Compose 中使用 environment 属性设置了这两个环境变量,而 MYSQL_ROOT_PASSWORD 环境变量是由 MySQL 官方镜像定义的。应用程序中的 mysql.createConnection 操作使用了 process.env.DB_PASSWORD 引用环境变量。

总结

本文详细讲解了 Docker 容器内环境变量的配置方法和使用方法。掌握这些知识,可以更好地管理部署中的敏感信息,并提高应用程序的可移植性和灵活性。福利彩票由此好运相关的 env/app/setting.yaml 配置文件的开发也可以参照类似的思路,提高数据与敏感信息的安全性!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/647ab08e968c7c53b065d0f4


猜你喜欢

  • PWA 实现懒加载详解及代码实现

    在前端开发中,优化网站或应用的性能是一个非常重要的任务。懒加载(lazy loading)是一种优化网站性能的方法,它可以延迟加载网页中的资源,例如图片或视频,直到它们即将出现在用户的视野中。

    1 年前
  • Promise.then 多次调用时的执行顺序分析

    在前端开发中,我们经常会用到 Promise 来处理异步操作。Promise 中的 then 方法可以添加一个或多个回调函数,这些回调函数会在 Promise 对象状态发生改变时被调用。

    1 年前
  • 如何使用 Hapi 和 Bookshelf.js 进行 ORM

    前端开发中使用 ORM (Object-Relational Mapping) 可以简化对数据库的操作,使代码更加易读、易修改和易维护。本文将着重介绍如何使用 Hapi 和 Bookshelf.js ...

    1 年前
  • Flexbox 解决列表元素残留空白的问题

    对于前端开发者来说,设计师们提供了一份完美的设计稿,然而实现页面却往往不如我们所愿。特别是在布局方面,我们总是遇到各种棘手的问题。其中,列表元素残留空白就是一个比较常见的问题。

    1 年前
  • ECMAScript 2020 (ES11) 中的 BigInt 基础应用实例详解

    在 ECMAScript 2020 (ES11) 中,新增了一个基本数据类型:BigInt。BigInt 是一种可以表示任意大整数的数据类型,大小不受限制。相比于 Number 类型,BigInt 可...

    1 年前
  • ESLint 遇到错误提示:'Pseudo-elements and pseudo-classes should be last of selector',该怎么解决?

    ESLint 遇到错误提示:'Pseudo-elements and pseudo-classes should be last of selector',该怎么解决? 当使用 ESLint 对前端代...

    1 年前
  • TypeScript 中如何处理数组中的不同数据类型?

    在 JavaScript 中,数组中可以存放不同类型的数据,这种灵活性带来了很多方便。但是,在有些情况下,我们需要对数组的类型进行限制,以保证代码的安全性和健壮性。

    1 年前
  • Webpack 代码分割的实现与最佳实践

    Webpack 是一款现代化的前端打包工具,其擅长管理和优化项目中的各种资源文件。代码分割即是其中一项优秀的功能,它可以将项目中的代码按照需求动态地加载,优化页面渲染速度和用户体验。

    1 年前
  • 在 Node.js 中使用 Chai 测试带有回调的函数

    在 Node.js 的开发中,我们经常需要编写带有回调函数的异步代码。这种代码的测试需要一些特殊的技巧和工具。Chai 是一个流行的断言库,可以用来测试 Node.js 应用程序的各个方面。

    1 年前
  • 如何用 Sass 优化响应式设计?

    前言 在当前 Web 开发中,响应式设计已经成为一项必备技术,能够为用户提供更好的浏览体验。Sass(Syntactically Awesome Stylesheets)是一种流行的 CSS 预处理器...

    1 年前
  • Sequelize 如何实现聚合查询?

    Sequelize 是 Node.js 中一个成熟的 ORM(Object-Relational Mapping)框架,它为开发者提供了一种方便、易用的方式来执行数据库操作。

    1 年前
  • 如何让 WordPress 站点更无障碍?

    随着技术的不断发展,我们的生活方式随之改变,许多人使用计算机和互联网来获取信息和交流。但是,在这个数字时代,依然有很多人如残疾人士、老年人等,他们面临着访问互联网的障碍,因为很多网站没有进行无障碍化设...

    1 年前
  • 如何使用 SSE 和 Redis 实现全局消息推送?

    在现代 Web 应用程序中,实时通知和即时更新是非常重要的功能,无论是在线购物、社交媒体、协作办公室,还是其他和用户实时交互相关的应用,都需要实现这些功能。在实现实时通知时,可以使用 SSE(Serv...

    1 年前
  • Vue 中使用 LRU 缓存提高前端性能

    随着 Web 应用程序变得越来越复杂,前端性能优化成为开发过程中不可忽视的一部分。借助程序缓存,我们可以减少服务器负载和网络带宽消耗,同时提高用户体验。本文将介绍如何在 Vue 应用程序中使用 LRU...

    1 年前
  • Fastify 框架中如何处理文件上传?

    随着人们对互联网应用的需求越来越高,文件上传也成为了一个常见的功能。如何有效地处理文件上传成为互联网应用的一大难点,本文将介绍在 Fastify 框架中如何处理文件上传。

    1 年前
  • 使用 RxJS debounce 操作符控制连续输入的频率

    在前端开发中,我们常常需要处理用户的输入,例如搜索框、表单输入等等。但是,用户输入的频率可能非常快,我们需要对输入进行限制以避免不必要的操作。RxJS 的 debounce 操作符可以帮助我们控制连续...

    1 年前
  • ES10 的全局对象与更精确的时间处理

    随着ES10的到来,JavaScript的全局对象也得到了增强,其中最让前端开发者感兴趣的是新的时间处理方案。这一篇文章将带你详细了解ES10的全局对象以及更精确的时间处理方式。

    1 年前
  • ES9 中与标准的比较和数组去重

    ES9 中与标准的比较和数组去重 ES9,也称ES2018,是 ECMAScript 的最新版本。它是一种基于标准化的脚本语言,旨在成为Web浏览器中的实现。ES9在ES6、ES7和ES8上做了很多改...

    1 年前
  • 使用 Node.js 和 Mongoose 进行 MongoDB 操作

    简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。它使用基于事件驱动的、非阻塞式 I/O 模型,使其轻松地构建高效、可扩展的网络应用程序。

    1 年前
  • Mongoose 中如何使用 Middlewares

    Mongoose 是一个优秀的 Node.js 模块,用于在应用程序中连接和管理 MongoDB 数据库。Middlewares 可以帮助开发者在实际的开发中更加方便地进行数据校验和处理,从而提高代码...

    1 年前

相关推荐

    暂无文章