gpt4 book ai didi

docker - Docker使用卷共享环境变量

转载 作者:行者123 更新时间:2023-12-02 19:21:53 25 4
gpt4 key购买 nike

--link功能被弃用以来,如何共享环境变量?
Docker文档(https://docs.docker.com/network/links/)状态

Warning: The --link flag is a legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link. One feature that user-defined networks do not support that you can do with --link is sharing environment variables between containers. However, you can use other mechanisms such as volumes to share environment variables between containers in a more controlled way.



但是如何使用卷共享环境变量?我没有在“卷”部分找到有关环境变量的任何信息。

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

最佳答案

通常,您可以通过向其他容器显式提供相同的环境变量来实现。如果您使用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,则将为 databasefrontend容器提供相同的值。如果您不使用 docker-compose,您仍然可以通过使用环境文件来简化操作。创建一个名为 database.env的文件,其中包含:
MYSQL_ROOT_PASSWORD=secret

然后使用 docker run --env-file database.env ...将您的容器指向该容器。

您不能使用卷共享环境变量,但是您当然可以共享文件。因此,另一个选择是让数据库容器将包含密码的文件写入共享卷,然后在其他容器中读取该文件。

关于docker - Docker使用卷共享环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59057159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com