DIV
DIV

Reputation: 263

Having trouble setting .env variables in docker compose file

I'm trying to follow Docker docs and SO suggestions, but still getting "variable not set" errors on just trying to "docker-compose up db". Can someone please check my .env and yaml file? Both are in the same directory but it doesn't seem yml is reading .env???

.env:

FS_NAME=MY_BLOG_NAME
FS_REGION=us-east-2
DB_HOST=localhost
DB_USER=postgres
DB_PASS=$$323MY_PASS$&84
DB_NAME=postgres

docker-compose.yml:

version: '3.7'
volumes:
    db_data:

x-shared_environment: &shared_environment
   LOG_LEVEL: ${LOG_LEVEL:-debug}
   DATABASE_HOST: ${DB_HOST}
   DATABASE_NAME: ${DB_NAME}
   DATABASE_USERNAME: ${DB_USERNAME}
   DATABASE_PASSWORD: ${DB_PASSWORD}

services:
  app:
    image: MY_BLOG_NAME:latest
    build:
      context: .
    environment:
      <<: *shared_environment
      FS_NAME: ${FS_NAME}
      FS_REGION: ${FS_REGION}
    depends_on:
    - db
    ports:
      - '8080:8080'
      
db:
    image: postgres:12.2-apline
    volumes:
        -db_data/var/lib/postrgresql/data/pgdata
    environment:
        PGDATA: /var/lib/postgresql/data/pgdata
        POSTGRES_USER: {DB_USERNAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
        POSTGRES_DB: {DB_NAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
    ports:
        -'5432:5432'

Upvotes: 1

Views: 657

Answers (1)

noam steiner
noam steiner

Reputation: 4444

You need to specify the directory of your .env file, add env_file configuration for each service.

https://docs.docker.com/compose/environment-variables/

For exapmle:

db:
    image: postgres:12.2-apline
    volumes:
        -db_data/var/lib/postrgresql/data/pgdata
    env_file: 
        - ./.env
    environment:
        PGDATA: /var/lib/postgresql/data/pgdata
        POSTGRES_USER: {DB_USERNAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
        POSTGRES_DB: {DB_NAME}
        POSTGRESS_PASSWORD: {DB_PASSWORD}
    ports:
        -'5432:5432'

Upvotes: 1

Related Questions