Home > front end >  Fail to interpolate the environment variable to ports declaration in "docker-compose.yaml"
Fail to interpolate the environment variable to ports declaration in "docker-compose.yaml"

Time:10-25

docker-compose.yaml

version: "3"

services:

  Database:

    image: postgres
    container_name: Database
    restart: always
    ports:
      - "${DATA_BASE_HOST}:${DATA_BASE_HOST}"

    env_file:
      - 01-Source/Infrastructure/Interactions/ClientAndFrontServer/.env.dataBase.local.public
      - 01-Source/Infrastructure/Interactions/ClientAndFrontServer/.env.dataBase.local.private

    // ...

I made sure that paths to files are correct. If to make mistake in these path, the error like

open D:\IntelliJ IDEA\XXX\01-Source\Infrastructure\Interactions\ClientAndFrontServe
r\.env.dataBase.local.publicd: 
The system cannot find the file specified.
`docker-compose` process finished with exit code 14

will occur.

.env.dataBase.local.public

DATA_BASE_HOST=localhost
DATA_BASE_PORT=5432

The error

Ttime="2022-10-23T10:51:41 09:00" level=warning msg="The \"DATA_BASE_HOST\" variable is not set. Defaulting to a blank st
ring."
1 error(s) decoding:

* error decoding 'Ports': No port specified: :<empty>
`docker-compose` process finished with exit code 15

CodePudding user response:

The env_file directive sets up environment variables inside the container and doesn't affect docker compose.

To set environment variables you can use in docker compose, you can either name the file .env or you can use the --env-file option on your docker compose commands

To use your database file, you'd do

docker-compose --env-file .env.dataBase.local.public up

More info here: https://docs.docker.com/compose/environment-variables/#using-the---env-file--option

  • Related