【问题标题】:share env variables between 2 containers from docker-compose在 docker-compose 的 2 个容器之间共享环境变量
【发布时间】:2019-02-03 12:32:12
【问题描述】:

在我的 docker-compose 中,我有 2 个容器,php-container 和 nginx 容器。对于 nginx 容器,我定义了 env 变量,有没有办法在代码中访问 php 容器中的该变量?我想在 php 代码中访问 PLAYER_NAME 变量

version: '3.7'

services:
  api:
    build: '.'
    volumes:
      - './:/srv/api:rw'
    env_file:
      - .env
    networks:
      - backend

  nginx_player_1:
    image: 'nginx:1.15.7-alpine'
    depends_on:
      - api
    volumes:
      - './docker/nginx/conf.d:/etc/nginx/conf.d:ro'
      - './:/srv/api:rw'
    ports:
      - '8001:80'
    environment:
      PLAYER_NAME: 'PLAYER_1'
    networks:
      - backend

【问题讨论】:

    标签: php docker docker-compose


    【解决方案1】:

    不,您不能那样做,容器在设计上是隔离的。您必须为两个容器定义环境变量。

    为了不重复您的代码,您可以使用yaml anchorsextension fields

    version: '3.7'
    
    x-environment: &commonEnvironment
        PLAYER_NAME: 'PLAYER_1'
    
    services:
        service-1: 
            environment: *commonEnvironment
        service-2: 
            environment: *commonEnvironment
    

    或者你可以使用 env 文件。您将所有变量放在文件中的位置,并使用 env_file 从 docker-compose 引用它

    【讨论】:

    • 环境 => 环境(对不起,我是一个语法纳粹,但这对于只想复制粘贴的人来说可能很重要)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多