Saya memiliki masalah dengan file .env saya jika tidak ada di folder yang sama dengan file docker-compose. Ketika saya menempatkannya di subfolder dan mereferensikannya, itu hanya akan mengatakan variabel tidak ditentukan dan akan default ke string kosong. Ketika saya menghapus file .env dikatakan tidak dapat menemukan file .env, jadi ia menemukan file tersebut tetapi tidak melakukan apa-apa. Ketika saya memindahkan file .env ke direktori yang sama dengan file docker-compose dan memperbarui jalurnya atau malah membuat symlink, semuanya berfungsi dengan baik.
Rupanya docker-compose memiliki masalah dengan memuat file env yang tidak ada di direktori yang sama dengan file docker-compose.
Saat ini saya "memperbaiki" ini dengan menghubungkan file .env seperti yang dibagikan dengan proyek Laravel dalam subfolder.
File pembuat galangan saya (disederhanakan):
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:
Ini telah dijawab sebelumnya:
dll.
Lihat halaman disambiguasi: https://docs.docker.com/compose/environment-variables/
Hei @ shin-, saya punya masalah yang sebenarnya.
Saya membaca dokumen resmi (https://docs.docker.com/compose/env-file/), dan topik yang Anda posting tetapi itu tidak menjawab pertanyaan saya. Seperti yang dikatakan OP, jika file .env berada di jalur yang berbeda dari jalur docker-compose.yml, itu tidak akan berfungsi.
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
Di dalam ./app/ saya memiliki aplikasi symfony dengan .env-nya sendiri dan saya ingin vars env yang digunakan untuk membuat gambar diletakkan di .env yang sama, untuk membuatnya berfungsi saya memiliki 2 x .env, satu di docker- buat dir dan satu di direktori aplikasi saya
Afaik variabel lingkungan diimpor dalam aplikasi tetapi Anda tidak dapat menggunakannya di file docker-compose Anda (seperti yang Anda lakukan dengan NGINX_PORT. Gunakan file .env terpisah untuk itu di direktori yang sama dan muat itu dari aplikasi jika Anda benar-benar sangat membutuhkannya.
Komentar yang paling membantu
Hei @ shin-, saya punya masalah yang sebenarnya.
Saya membaca dokumen resmi (https://docs.docker.com/compose/env-file/), dan topik yang Anda posting tetapi itu tidak menjawab pertanyaan saya. Seperti yang dikatakan OP, jika file .env berada di jalur yang berbeda dari jalur docker-compose.yml, itu tidak akan berfungsi.
Di dalam ./app/ saya memiliki aplikasi symfony dengan .env-nya sendiri dan saya ingin vars env yang digunakan untuk membuat gambar diletakkan di .env yang sama, untuk membuatnya berfungsi saya memiliki 2 x .env, satu di docker- buat dir dan satu di direktori aplikasi saya