当前位置: 首页 > 面试题库 >

在docker-compose yml中重用环境变量

高夜洛
2023-03-14
问题内容

是否可以重用在多个容器之间共享的环境变量以避免重复,如本示例所示:

version: '2'

services:

  db:
    image: example/db
    ports:
      - "8443:8443" 
    container_name: db
    hostname: db
    environment:
      - USER_NAME = admin 
      - USER_PASSWORD = admin

svc:
  image: example/svc
  depends_on:
    - db
  ports:
    - "9443:9443"
  container_name: svc
  hostname: svc
  environment:
    - DB_URL = https://db:8443
    - DB_USER_NAME = admin
    - DB_USER_PASSWORD = admin

问题答案:

extends选项可能是好的,但它不支持在3.x撰写文件。其他走的方式是:

  1. 扩展名字段(撰写文件3.4+)

如果可以使用3.4+组成文件,则扩展名字段可能是最佳选择:

docker-compose.yml

    version: '3.4'

x-common-variables: &common-variables
  VARIABLE: some_value
  ANOTHER_VARIABLE: another_value

services:
  some_service:
    image: someimage
    environment: *common-variables

  another_service:
    image: anotherimage
    environment:
      <<: *common-variables
      NON_COMMON_VARIABLE: 'non_common_value'
  1. env_file指令

docker-compose.yml

    version: '3.2'

services:
  some_service:
    image: someimage
    env_file:
      - 'variables.env'

  another_service:
    image: anotherimage
    env_file:
      - 'variables.env'

variables.env

    VARIABLE=some_value
ANOTHER_VARIABLE=another_value
  1. * 项目根目录中的 *.env 文件(或实际撰写环境中的变量)

.env文件中的变量可以在服务配置中引用:

docker-compose.yml

    version: '3.2'

services:
  some_service:
    image: someimage
    environment:
      - VARIABLE

  another_service:
    image: anotherimage
    environment:
      - VARIABLE
      - ANOTHER_VARIABLE

.env

    VARIABLE=some_value
ANOTHER_VARIABLE=another_value


 类似资料:
  • 我希望能够在docker compose中使用env变量。yml,值在docker compose up时传入。这就是一个例子。 我今天用基本的docker run命令来做这件事,它包含在我自己的脚本中。有没有一种方法可以在没有任何bash包装器的情况下用compose实现它?

  • 问题内容: 我希望能够在docker-compose.yml中使用env变量,并在docker-compose时传入值。这就是例子。我今天使用基本的docker run命令来执行此操作,该命令包装在我自己的脚本中。没有任何这样的bash包装器,有没有办法通过compose实现它? 问题答案: 创建一个,这是您的with环境变量。 假设您的环境变量在文件“ env.sh”中 将以下代码放入sh文件中

  • 问题内容: 我正在尝试设置一个postgres容器,并希望使用以下命令设置postgres登录名: 所以我像这样创建了docker-compose.yml 我还尝试了将环境变量声明为db部分的其他语法: 但是这些选项似乎都不起作用,因为无论出于什么原因,无论何时我尝试使用各种连接字符串连接到postgres数据库: 与抱怨没有用户数据库相反,它们都给我身份验证失败。 问题答案: 您收到的身份验证错

  • 我希望能够在docker-compose.yml中使用env变量,这些变量的值是在时传入的。这就是例子。 我今天用基本的docker run命令来完成这个任务,它被包装在我自己的脚本中。有没有一种方法可以用compose来实现它,而不需要任何这样的bash包装器?

  • 我在使用dotnet core 3.1和visual Studio生成的DockerFile时遇到了一些问题。 我试图通过Dockerfile将密码放入docker的环境变量中,但当我使用读取varibale时,该变量为NULL。 提前致谢

  • 问题内容: 如果设置了环境变量,请说,然后在连接到固定字符串的入口点脚本中使用它,例如: 与作为环境varible的价值,我该怎么办呢?我尝试使用,但这似乎不起作用,因为它确实是正确的。 问题答案: 您正在使用ENTRYPOINT 的 exec形式 。与 shell表单 不同, exec表单 不会调用命令shell。这意味着正常的外壳处理不会发生。例如,将不会在$ HOME上进行变量替换。如果要进