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

阅读时长 5 分钟读完

在开发和部署前端应用程序时,我们经常需要使用环境变量来存储敏感信息,例如数据库密码、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

纠错
反馈