如何 运行 TFLint Docker - 传递多个参数

How to run TFLint Docker - Passing multiple Args

运行 TFLint 通过他们的 Docker 图像 Here - 我必须一个接一个地传递 tflint 多个命令来初始化和 运行 我所在的工具我 运行 遇到问题

我在本地 运行 它使用以下命令,returns 我想要什么:

tflint --init --config 'path/to/config/'
tflint --config 'path/to/config/config.tflint.hcl' 'path/to/terraform/code'

# AND

tflint --init --config 'path/to/config/config.tflint.hcl' && tflint --config 'path/to/config/' 'path/to/terraform/code'

这是我用来 运行 docker 图片的命令:

docker run -it -v "$(pwd):/tflint" ghcr.io/terraform-linters/tflint --init --config '/tflint/path/to/config/config.tflint.hcl'   

docker run -it -v "$(pwd):/tflint" ghcr.io/terraform-linters/tflint --config '/tflint/path/to/config/config.tflint.hcl' '/tflint/path/to/terraform/code'

输出:

Installing `azurerm` plugin...
Installed `azurerm` (source: github.com/terraform-linters/tflint-ruleset-azurerm, version: 0.15.0)
Failed to initialize plugins; Plugin `azurerm` not found. Did you run `tflint --init`?

我知道这是在每个 运行 上创建一个新容器,这就是为什么它没有检测到它已经被初始化的原因 - 我的问题是我如何重用这个容器来传递它在初始化后需要的额外参数?或者有更好的方法吗?任何 input/feedback 将不胜感激 :) 谢谢!

注意:这是 DockerTFLint 使用的文件

FROM golang:1.18.1-alpine3.15 as builder

RUN apk add --no-cache make

WORKDIR /tflint
COPY . /tflint
RUN make build

FROM alpine:3.15.4 as prod

LABEL maintainer=terraform-linters

RUN apk add --no-cache ca-certificates

COPY --from=builder /tflint/dist/tflint /usr/local/bin

ENTRYPOINT ["tflint"]
WORKDIR /data

您可以创建使用 tflint 基础映像的专用 Dockerfile ghcr.io/terraform-linters/tflint 并复制您的文件。 类似于:

FROM ghcr.io/terraform-linters/tflint

COPY <my files>

RUN tflint --init .......

举个例子,给大家一个思路。然后在本地构建它:

docker build -t mytflint .

并使用您构建的映像:

docker run mytflint ......

您可以将入口点更改为 sh 并传递多个命令

docker run -it -v "$(pwd):/tflint" --entrypoint=/bin/sh ghcr.io/terraform-linters/tflint -c "tflint --init --config '/tflint/path/to/config/config.tflint.hcl'; tflint --config '/tflint/path/to/config/config.tflint.hcl' '/tflint/path/to/terraform/code'"