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

时间:2019-02-03 12:32:13

标签: php docker docker-compose

在我的docker-compose中,我有2个容器,php容器和nginx容器。对于我定义的env变量的nginx容器,有没有办法在代码中的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

1 个答案:

答案 0 :(得分:1)

不是,您不能那样做,容器是根据设计隔离的。您必须为两个容器都定义env变量。

要不重复代码,可以使用yaml anchorsextension fileds

version: '3.7'

x-enviroment: &commonEnviroment
    PLAYER_NAME: 'PLAYER_1'

services:
    service-1: 
        enviroment: *commonEnviroment
    service-2: 
        enviroment: *commonEnviroment

或者您可以使用env文件。将所有变量放在文件中的位置,并使用env_file

从docker-compose引用它