Windows 10 Makefile错误make(e = 2):系统找不到指定的文件

时间:2019-06-20 18:41:40

标签: docker makefile

我正在使用:

  • Windows 10
  • 制作3.81
  • docker CE 18.09.2
  • docker撰写1.23.2
  • git bash 2.22.0.windows.1

我有一个 S_ISUID 04000 set-user-ID bit S_ISGID 02000 set-group-ID bit (see below) S_ISVTX 01000 sticky bit (see below) S_IRWXU 00700 owner has read, write, and execute permission S_IRUSR 00400 owner has read permission S_IWUSR 00200 owner has write permission S_IXUSR 00100 owner has execute permission S_IRWXG 00070 group has read, write, and execute permission S_IRGRP 00040 group has read permission S_IWGRP 00020 group has write permission S_IXGRP 00010 group has execute permission S_IRWXO 00007 others (not in group) have read, write, and execute per‐ mission S_IROTH 00004 others have read permission S_IWOTH 00002 others have write permission S_IXOTH 00001 others have execute permission 文件,看起来像这样:

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

当我从GitBash命令行运行时:

init:
    docker-compose run terraform init

我得到以下输出

  

docker-compose运行terraform init
  process_begin:CreateProcess(NULL,docker-compose run terraform init,...)失败。
  make(e = 2):系统找不到指定的文件。
  make:*** [init]错误2

我已经看到other posts与此相关,并且知道这是我的make init 环境变量中的值存在问题,但是我不确定如何解决此问题。

请告知我是否可以提供更多信息


更新

我已经确认:

  • PATH已安装
  • docker-compose存在于我的PATH环境变量中(见下文)

我的PATH环境变量:

enter image description here


更新2

如果我修改了makefile,以便它明确指出docker-compose.exe文件的路径,那么它将起作用:

docker-compose.exe

更新3-解决方案

所以我的完整init: "/c/Program Files/Docker/Docker/resources/bin/docker-compose.exe" run terraform init 实际上是这样的:

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,其中包括一个PATH env var

.env file

从此文件中删除AWS_SECRET_ACCESS_KEY=... AWS_SESSION_TOKEN=... AWS_ACCESS_KEY_ID=... PATH=... 行可以为我解决:)

2 个答案:

答案 0 :(得分:1)

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

要进行故障排除,请尝试添加

echo "$$PATH"

(当然,由选项卡缩进)在失败的命令之前,然后检查结果是否确认您的期望。

(在这种情况下,美元符号必须加倍,以将文字的美元符号从make传递到基础外壳。)

答案 1 :(得分:0)

这意味着在Makefile中执行docker-compose时找不到docker-compose run terraform init

如果您不执行make,而仅执行docker-compose,那么您将也找不到docker-compose

a)如果尚未安装docker-compose,请从official release site下载以进行安装,这是一个直接下载链接供您参考: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,则可以引用this来完成。