Compose: Относительный путь к env_file

Созданный на 26 апр. 2017  ·  3Комментарии  ·  Источник: docker/compose

У меня проблема с моим файлом .env, когда он не находится в той же папке, что и файл docker-compose. Когда я помещаю его в подпапку и ссылаюсь на него, он просто говорит, что переменные не определены, и по умолчанию используется пустая строка. Когда я удаляю файл .env, он говорит, что не может найти файл .env, поэтому он находит файл, но ничего не делает. Когда я перемещаю файл .env в тот же каталог, что и файл docker-compose, и обновляю его путь или вместо этого создаю символическую ссылку, все работает нормально.

По-видимому, у docker-compose есть проблемы с загрузкой файлов env, которые не находятся в том же каталоге, что и файл docker-compose.

В настоящее время я «исправил» это, установив символическую ссылку на файл .env, поскольку он используется совместно с проектом Laravel во вложенной папке.

Мой файл docker-compose (упрощенный):

version: '3'

services:
  mysql:
    image: mariadb
    volumes:
      - mysql_data:/var/lib/mysql/data
    env_file:
      - ./api/.env
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

volumes:
  mysql_data:
kinquestion

Самый полезный комментарий

Привет, @ shin-, у меня точная проблема.
Я прочитал официальный документ (https://docs.docker.com/compose/env-file/) и темы, которые вы опубликовали, но не ответили на мой вопрос. Как сказал OP, если файл .env находится на другом пути, чем путь docker-compose.yml, он не работает.

version: '3.7'
services:
  postgres:
    image: postgres:alpine
    restart: always
    environment:
      POSTGRES_DB: ${DB_NAME}
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
  php:
    build:
      context: .
      dockerfile: ./docker/php/Dockerfile
    restart: always
    env_file:
      - ./app/.env
    volumes:
      - ./app:/usr/src/app
  nginx:
    image: nginx:1.15.3-alpine
    restart: always
    volumes:
      - ./app:/usr/src/app
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
      - ${NGINX_PORT}:80
    depends_on:
      - php

Внутри ./app/ у меня есть приложение symfony с собственным .env, и я хочу, чтобы переменные env, используемые для создания изображений, были помещены в тот же .env, чтобы он работал, у меня есть 2 x .env, один в docker- создать каталог и один в моем каталоге приложения

Все 3 Комментарий

На это уже был дан ответ:

4001

4618

и т.п.

См. Страницу значений неоднозначности: https://docs.docker.com/compose/environment-variables/

Привет, @ shin-, у меня точная проблема.
Я прочитал официальный документ (https://docs.docker.com/compose/env-file/) и темы, которые вы опубликовали, но не ответили на мой вопрос. Как сказал OP, если файл .env находится на другом пути, чем путь docker-compose.yml, он не работает.

version: '3.7'
services:
  postgres:
    image: postgres:alpine
    restart: always
    environment:
      POSTGRES_DB: ${DB_NAME}
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
  php:
    build:
      context: .
      dockerfile: ./docker/php/Dockerfile
    restart: always
    env_file:
      - ./app/.env
    volumes:
      - ./app:/usr/src/app
  nginx:
    image: nginx:1.15.3-alpine
    restart: always
    volumes:
      - ./app:/usr/src/app
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
      - ${NGINX_PORT}:80
    depends_on:
      - php

Внутри ./app/ у меня есть приложение symfony с собственным .env, и я хочу, чтобы переменные env, используемые для создания изображений, были помещены в тот же .env, чтобы он работал, у меня есть 2 x .env, один в docker- создать каталог и один в моем каталоге приложения

Afaik переменные среды импортируются в приложение, но вы не можете использовать их в своем файле docker-compose (как вы это делали с NGINX_PORT. Используйте отдельный файл .env для этого в том же каталоге и загрузите его из приложения, если вы действительно действительно нужно.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги