Compose: المسار النسبي لـ env_file

تم إنشاؤها على ٢٦ أبريل ٢٠١٧  ·  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

التعليق الأكثر فائدة

يا @ شين- ، لدي المشكلة بالضبط.
قرأت المستند الرسمي (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 ، واحد في عامل الإرساء- يؤلف دير وواحد في تطبيقي دير

ال 3 كومينتر

تمت الإجابة على هذا مسبقًا:

4001

4618

إلخ

انظر صفحة توضيح: https://docs.docker.com/compose/environment-variables/

يا @ شين- ، لدي المشكلة بالضبط.
قرأت المستند الرسمي (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 ، واحد في عامل الإرساء- يؤلف دير وواحد في تطبيقي دير

يتم استيراد متغيرات البيئة Afaik في التطبيق ولكن لا يمكنك استخدامها في ملف إنشاء عامل الإرساء (كما فعلت مع NGINX_PORT. استخدم ملف .env منفصل لذلك في نفس الدليل وقم بتحميله من التطبيق إذا كنت حقًا حقا في حاجة إليها.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات