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

And*_* Nt 10 php docker docker-compose

在我的 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
Run Code Online (Sandbox Code Playgroud)

mic*_*sna 8

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

为了不重复您的代码,您可以使用带有扩展字段的yaml 锚点

version: '3.7'

x-environment: &commonEnvironment
    PLAYER_NAME: 'PLAYER_1'

services:
    service-1: 
        environment: *commonEnvironment
    service-2: 
        environment: *commonEnvironment
Run Code Online (Sandbox Code Playgroud)

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