Py学习  »  docker

Docker使用卷共享环境变量

white_gecko • 4 年前 • 981 次点击  

如何共享环境变量,因为 --link 功能已弃用? https://docs.docker.com/network/links/ )国家

警告: --链接 最终被移除。除非你绝对需要继续使用 我们建议您使用用户定义的网络 两个容器之间的通信而不是使用 --链接 . 一个 用户定义的网络不支持的功能 正在容器之间共享环境变量。但是,您可以使用其他机制(如卷)来共享环境 容器之间的变量以更可控的方式。

我遇到的问题是,我想在启动容器时将数据库密码设置为环境变量。其他一些容器将数据加载到数据库中,因此需要连接到数据库并提供凭据。到目前为止,加载容器通过读取环境变量自行发现密码。如果没有 --链接 ?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53794
 
981 次点击  
文章 [ 1 ]  |  最新文章 4 年前
larsks
Reply   •   1 楼
larsks    4 年前

通常,您是通过显式地向其他容器提供相同的环境变量来实现的。如果你用的是 docker-compose.yml

version: 3

services:
  database:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD

  frontend:
    image: webserver
    environment:
      MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD

如果你设置了 MYSQL_ROOT_PASSWORD .env 文件,将为两个 database frontend 集装箱。如果你不使用 docker-compose database.env 包含:

MYSQL_ROOT_PASSWORD=secret

docker run --env-file database.env ... .


文件夹 . 因此,另一种选择是让数据库容器将包含密码的文件写入共享卷,然后在其他容器中读取。