docker - Windows 10 Makefile 错误 make (e=2): 系统找不到指定的文件
问题描述
我在用着:
- 视窗 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 环境变量:
更新 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
从此文件中删除该行为我解决它:)
解决方案
如果您Makefile
以某种方式操纵PATH
变量以使docker-compose
安装的目录不再位于其上,则会导致这种症状。
对于故障排除,请尝试添加
echo "$$PATH"
(当然,用制表符缩进)就在失败的命令之前,并检查结果是否符合您的期望。
(在这种情况下,美元符号需要加倍才能将文字美元符号从make
底层外壳传递。)
推荐阅读
- javascript - 为什么这个“if”语句放置有效
- postgresql - 无法从 pgadmin、CLI 连接到 IBM PostgreSQL
- azure-devops - 在 Azure DevOps 中导入工作项 .csv 文件时出错
- python-3.x - 2d python 列表populaiton
- android - Flutter json数组解析
- reactjs - 我从 apollo 客户端的突变怎么会得到 400 错误,而我可以在操场上做到这一点?
- javascript - 将 Promise.all 与 Promise 数组一起使用
- nginx - 页面数据刷新不一致
- php - 如何合并 3 个数组、分组和计算重复项?
- python - 当 AWS::CustomResource 具有列表类型输出时如何获取选择性项目