لدي مشكلة مع ملف .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:
تمت الإجابة على هذا مسبقًا:
إلخ
انظر صفحة توضيح: 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 منفصل لذلك في نفس الدليل وقم بتحميله من التطبيق إذا كنت حقًا حقا في حاجة إليها.
التعليق الأكثر فائدة
يا @ شين- ، لدي المشكلة بالضبط.
قرأت المستند الرسمي (https://docs.docker.com/compose/env-file/) والموضوعات التي نشرتها ولكن ذلك لم يُجب على سؤالي. كما قال OP ، إذا كان ملف .env في مسار مختلف عن مسار docker-compose.yml فإنه لا يعمل.
داخل ./app/ لديّ تطبيق symfony الخاص به .env وأريد أن يتم وضع المتغيرات env المستخدمة لبناء الصور في نفس .env ، لجعلها تعمل لدي 2 x .env ، واحد في عامل الإرساء- يؤلف دير وواحد في تطبيقي دير