Compose: Jalur relatif ke env_file

Dibuat pada 26 Apr 2017  ·  3Komentar  ·  Sumber: docker/compose

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:
kinquestion

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.

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

Semua 3 komentar

Ini telah dijawab sebelumnya:

4001

4618

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat