Ошибка Makefile для Windows 10 make (e = 2): система не может найти указанный файл - PullRequest
0 голосов
/ 20 июня 2019

Я использую:

  • Windows 10
  • сделать 3.81
  • докер CE 18.09.2
  • докер составляет 1.23.2
  • git bash 2.22.0.windows.1

У меня есть файл docker-compose.yaml, который выглядит следующим образом:

version: '3.2'

services:
  terraform:
    image: hashicorp/terraform:0.11.14
    entrypoint: terraform
    working_dir: /var/tmp/code/
    volumes:
      - .:/var/tmp/code/:rw

А мой Makefile выглядит так

init:
    docker-compose run terraform init

Когда я запускаю это из командной строки GitBash:

make init

Я получаю следующий вывод

docker-compose run terraform init
process_begin: Ошибка CreateProcess (NULL, docker-compose run terraform init, ...).
make (e = 2): система не может найти указанный файл.
make: *** [init] Ошибка 2

Я видел другие сообщения , относящиеся к этому, и понимаю, что это проблема со значениями в моей переменной окружения PATH, однако я не уверен, как исправить проблему.

Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию


Обновление

Я подтвердил, что:

  • docker-compose установлено
  • существует docker-compose.exe в моей переменной окружения PATH (см. Ниже)

Моя переменная среды PATH:

enter image description here


Обновление 2

Если я изменяю make-файл, чтобы он явно указывал путь к файлу docker-compose.exe, он работает:

init:
    "/c/Program Files/Docker/Docker/resources/bin/docker-compose.exe" run terraform init

Обновление 3 - Решение

Так что мой полный Makefile на самом деле выглядел так:

#!make
include .env
export

.env:
    @[ -f ./.env-aws ] && source ./.env-aws; env | grep AWS | sed 's/export //g; s/"//g' > .env

init-test:
    docker-compose run terraform init

Выполнение make .env создает .env file, который включает переменную PATH env

AWS_SECRET_ACCESS_KEY=...
AWS_SESSION_TOKEN=...
AWS_ACCESS_KEY_ID=...
PATH=...

Удаление строки PATH из этого файла решит ее для меня:)

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Если ваш Makefile каким-то образом манипулирует переменной PATH, так что каталог, в котором установлен docker-compose, больше не существует, это может вызвать симптомы такого рода.

Для устранения неполадок попробуйтедобавьте

echo "$$PATH"

(с отступом на вкладке, конечно) непосредственно перед ошибочной командой и проверьте, подтверждает ли результат ваши ожидания.

(знак доллара в этом случае должен быть удвоенконтекст для передачи буквального знака доллара из make в базовую оболочку.)

0 голосов
/ 21 июня 2019

Это означает, что docker-compose не найден при выполнении docker-compose run terraform init в Makefile.

Если вы не выполните make, просто docker-compose, вы также не сможете найти docker-compose.

a) Если вы не установили docker-compose, загрузите его с официального сайта выпуска , чтобы установить его, прямая ссылка для скачивания: https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-Windows-x86_64.exe

b) Если выустановили docker-compose, вам нужно знать, где вы его устанавливаете.Для моего сайта я установил его в: C:\Program Files\Docker\Docker\Resources\bin, поэтому перед выполнением make init я добавлю это в PATH:

C:\abc\try>set PATH=C:\Program Files\Docker\Docker\Resources\bin;%PATH%
C:\abc\try>make init

Кроме того, если вы хотите надолго добавить путь docker-compose в envВы можете сослаться на это , чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...