Laravel указывает другое имя из `.env` или делает ingore` .env`, чтобы не конфликтовать с docker и docker-compose - PullRequest
1 голос
/ 20 июня 2019

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

Итак, как я могу указать, настройте laravel NOT для поиска .env файл?Если это невозможно, как я могу изменить имя файла для поиска переменных и настроек среды?

docker-compose.yml находится в корневой папке проекта.

My docker-compose.ymlэто:

version: '3.1'
services:
  develop:
    image: ddesyllas/php-dev:${TAG}
    volumes:
      - ".:/var/www/html"
    links: 
      - memcache
    environment:
      DB_CONNECTION: postgresql
      DB_HOST : postgresql
      DB_PORT : 5432
      DB_DATABASE: ${DOCKER_POSTGRES_DB}
      DB_USERNAME: ${DOCKER_POSTGRES_USER}
      DB_PASSWORD: ${DOCKER_POSTGRES_PASSWORD}

  nginx:
    image: nginx:alpine
    ports:
      - 7880:7880
    links:
      - "develop:develop"
    volumes:
      - ".:/var/www/html"
      - "./docker/nginx.conf:/etc/nginx/nginx.conf:ro"


  postgresql:
    image: postgres:alpine
    volumes:
      - './docker/misc_volumes/postgresql:/var/lib/postgresql/data'
    environment:
      POSTGRES_USER: ${DOCKER_POSTGRES_USER}
      POSTGRES_DB: ${DOCKER_POSTGRES_DB}
      POSTGRES_PASSWORD: ${DOCKER_POSTGRES_PASSWORD}

  memcache:
    image: memcached:alpine

Поэтому в глобальном подходе необходимо использовать глобальные настройки при одноразовом применении.Например, я не хочу, чтобы мое приложение laravel вообще имело доступ к переменной окружения ${TAG}.

1 Ответ

4 голосов
/ 20 июня 2019

В вашем docker-compose.yml вы можете указать env_file, отличный от .env, например:

version: "3.1"
services:
  webserver:
    image: nginx:alpine
    restart: always
    container_name: laravel-webserver
    working_dir: /application
    env_file:
      - .env_docker
    networks: 
      - intranet

networks:
  intranet:
    external: false

Здесь docker-compose.yml будет использовать .env_docker вместо .env

Отредактировано:

Если вы хотите использовать другой файл для laravel .env, тогда вы можете изменить раздел volumns, чтобы указать, что Like:

volumes:
      - ".:/var/www/html"
      - "./docker/nginx.conf:/etc/nginx/nginx.conf:ro"
      - "/<path to your different env file>:/var/www/html/.env"

...