我正在使用:
我有一个 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环境变量:
更新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=...
行可以为我解决:)
答案 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来完成。