首页 > 解决方案 > Windows 10 Makefile 错误 make (e=2): 系统找不到指定的文件

问题描述

我在用着:

我有一个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环境变量值的问题,但是我不确定如何解决这个问题。

如果我可以提供更多信息,请告诉我


更新

我已经确认:

我的 PATH 环境变量:

在此处输入图像描述


更新 2

如果我修改 makefile 以明确说明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 环境变量

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

PATH从此文件中删除该行为我解决它:)

标签: dockermakefile

解决方案


如果您Makefile以某种方式操纵PATH变量以使docker-compose安装的目录不再位于其上,则会导致这种症状。

对于故障排除,请尝试添加

echo "$$PATH"

(当然,用制表符缩进)就在失败的命令之前,并检查结果是否符合您的期望。

(在这种情况下,美元符号需要加倍才能将文字美元符号从make底层外壳传递。)


推荐阅读