在docker-compose中的两个容器之间共享环境变量

14
在我的docker-compose中,我有2个容器php-container和nginx容器。对于nginx容器,我定义了环境变量,请问是否有办法在php容器的代码中访问该变量?我想要在php代码中访问PLAYER_NAME变量。

在我的docker-compose文件中,我有两个容器:php-container和nginx容器。对于nginx容器,我定义了一个环境变量。请问,在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
1个回答

15

不,你不能这样做,容器是被设计成隔离的。你必须为两个容器定义环境变量。

为了避免重复代码,你可以使用yaml锚点扩展字段之一:

version: '3.7'

x-environment: &commonEnvironment
    PLAYER_NAME: 'PLAYER_1'

services:
    service-1: 
        environment: *commonEnvironment
    service-2: 
        environment: *commonEnvironment

或者你可以使用 env-file。在文件中放置所有的变量,然后在 docker-compose 中使用env_file进行引用。


1
环境 - shegeley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接