Файл vars среды не считывается для обслуживания в Docker-Compose

#docker-compose #environment-variables #string-interpolation

Вопрос:

Моя информация:

  • ОС: Манджаро
  • Ядро: 5.14.7-2-МАНДЖАРО
  • Докер: 20.10.8-1
  • Докер-Сочинение: 1.29.2-1

Мой частичный docker-compose.yml файл:

 version: "3.8"
services: 
  db:
    build: 
      context: ./db
    container_name: cyp-db
    restart: unless-stopped
    env_file:
      - ./config/db.env
    ports: 
      - 5442:5432
    networks: 
      cyp-net:
        ipv4_address: 172.27.0.2
    volumes: 
      - ./db/data:/var/lib/postgresql/data
  
  graphql:
    build: 
      context: ./graphql
    container_name: cyp-graphql
    restart: unless-stopped
    env_file: 
      - ./config/graphql.env
    depends_on: 
      - db
    networks: 
      cyp-net:
        ipv4_address: 172.27.0.3
    ports: 
      - 5000:5000
    command: [
      "--connection", "postgres://${NAME_ROLE}:${PWD_ROLE}@172.27.0.2:5432/${DB_NAME}", 
      "--owner-connection", "postgres://${NAME_ADMIN}:${PWD_ADMIN}@172.27.0.2:5432/${DB_NAME}", 
      "--watch", 
      "--schema", "${DEFAULT_SCHEMA}", 
      "--default-role", "${DEFAULT_ROLE}",
      "--jwt-secret", "${JWT_SECRET}", 
      "--jwt-token-identifier", "${JWT_TOKEN_ID}",
      "--append-plugins", "@graphile-contrib/pg-simplify-inflector",
      "--simple-collections", "only",
      "--enhance-graphiql"
    ]

networks: 
  cyp-net:
    driver: bridge
    ipam:
     config:
       - subnet: 172.27.0.0/16
 

Мое db.env досье:

 POSTGRES_DB=mydb
POSTGRES_USER=dummy
POSTGRES_PASSWORD=dummy
 

Мое graphql.env досье:

 NAME_ROLE=any_role
PWD_ROLE=secret
NAME_ADMIN=dummy
PWD_ADMIN=secret
DB_NAME=mydb
JWT_SECRET=super_secret
JWT_TOKEN_ID=token
DEFAULT_ROLE=userx
DEFAULT_SCHEMA=chesu
 

Описание проблемы

  • Мой сервис db работает нормально, и его файл ENV считывается правильно,
  • Мой сервис graphql не работает, потому что его ENV-файл не читается, я получил эти сообщения:
 WARNING: The NAME_ROLE variable is not set. Defaulting to a blank string.
WARNING: The PWD_ROLE variable is not set. Defaulting to a blank string.
WARNING: The DB_NAME variable is not set. Defaulting to a blank string.
WARNING: The NAME_ADMIN variable is not set. Defaulting to a blank string.
WARNING: The PWD_ADMIN variable is not set. Defaulting to a blank string.
WARNING: The DEFAULT_ROLE variable is not set. Defaulting to a blank string.
WARNING: The JWT_SECRET variable is not set. Defaulting to a blank string.
WARNING: The JWT_TOKEN_ID variable is not set. Defaulting to a blank string.
cyp-db is up-to-date
Starting cyp-graphql ... done
 
  • Если я скопирую содержимое ./config/graphql.env в ./.env , то сервис запустится без каких-либо проблем.

Что происходит?