在开发和部署前端应用程序时,我们经常需要使用环境变量来存储敏感信息,例如数据库密码、API 密钥等。Docker 作为一种流行的容器化技术,可以帮助我们轻松地管理和配置环境变量。本文将详细介绍 Docker 容器内环境变量的配置方法,以及如何在容器中使用这些变量。
Docker 容器内环境变量配置方法
Docker 容器可以使用以下方法来设置环境变量:
1. Dockerfile 中设置环境变量
可以在 Dockerfile 中使用 ENV
指令来设置环境变量。例如,以下 Dockerfile 将 NODE_ENV
环境变量设置为 production
:
FROM node:14-alpine ENV NODE_ENV=production
2. 运行时使用 -e
参数设置环境变量
可以在运行容器时使用 -e
参数来设置环境变量。例如,以下命令将 API_KEY
环境变量设置为 123456
:
docker run -e API_KEY=123456 my-app
3. 使用容器编排工具设置环境变量
如果使用容器编排工具(例如 Docker Compose 或 Kubernetes),可以在配置文件中使用 environment
或 env
属性来设置环境变量。例如,以下 Docker Compose 配置文件将 PORT
环境变量设置为 3000
:
version: '3' services: app: build: . environment: PORT: 3000
在容器中使用环境变量
在容器内部,可以使用以下方法来使用环境变量:
1. 在脚本中使用环境变量
您可以在脚本中使用环境变量,例如 Node.js 代码中使用 process.env
对象:
const port = process.env.PORT || 3000;
2. 在 Dockerfile 中使用环境变量
您可以在 Dockerfile 中使用 $VARIABLE_NAME
语法来引用环境变量。例如,以下 Dockerfile 在安装 Node.js 时使用 $NODE_ENV
环境变量:
FROM node:14-alpine ENV NODE_ENV=production RUN npm install --${NODE_ENV}
示例代码
以下是一个示例 Node.js 应用程序,它使用环境变量来存储数据库密码和端口号,并使用 Docker Compose 部署:
Dockerfile
FROM node:14-alpine WORKDIR /app COPY package*.json ./ RUN npm install --production COPY . . ENV PORT=3000 ENV DB_PASSWORD=123456 CMD [ "npm", "start" ]
docker-compose.yml
-- -------------------- ---- ------- -------- --- --------- ---- ------ - ------------ ----- ---- ------------ ------ ------ - ----------- ----------- - -- --- ------ --------- ------------ -------------------- ------ --------------- ---- -------- - ---------------------- -------- --------
index.js
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ----- - ---------------- ----- --- - --------- ----- ---- - ---------------- -- ---- ----- -- - ------------------------ ----- ----- ----- ------- --------- ------------------------ --------- ------ -- ---------------- -- - -- ----- ----- --- ---------------------- -- ----------- -- ------------ ----- ---- -- - --------------- -------- -- ---------------- -- -- - ---------------- --------- -- -------------------------- --
本示例使用了三个环境变量:PORT
、DB_PASSWORD
和 MYSQL_ROOT_PASSWORD
。在 Dockerfile 中使用 ENV
指令设置了 PORT
和 DB_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