如何通过Dockerfile将参数传递给bash脚本

Jananath banuka

我有一个简单的Dockerfile如下:

FROM kalilinux/kali-rolling

WORKDIR /attack

COPY . /attack
RUN ls
RUN chmod +x attack.sh
RUN ./attack.sh $aws_access_key_id $aws_secret_access_key $default_region $bucket

我有这个attack.sh,它包含以下内容:

#!/bin/bash

# Getting the host passed as an argument to the script
/usr/share/zaproxy/zap.sh -cmd -addoninstall exportreport
mkdir -p /root/test

test() {
    echo "access key = ${1}"
    echo "secret key = ${2}"
    echo "default region = ${3}"
    echo "bucket = ${4}"
    echo "line = ${5}"

}

while IFS= read -r line; do
    # echo $line
    test $1 $2 $3 $4 $line 
done < domains.txt

如果您想知道如何将值传递给Dockerfile,则如下所示:

docker build --build-arg aws_access_key_id=${SPOT_RUNNER_ACCESS_KEY} --build-arg aws_secret_access_key=${SPOT_RUNNER_SECRET_KEY} --build-arg default_region=ap-southeast-2 --build-arg bucket=${BUCKET_NAME} -t run-test .

因此参数按以下顺序传递

docker build ---> Dockerfile ---> attack.sh

但是,这不起作用,它为这些变量提供了一个空值。

有人可以帮帮我吗?

暂定

为了让Docker使用您的构建参数,您需要在Dockerfile中通过名称将其指定为ARG完成后,这些变量将可供您用作参数。

FROM kalilinux/kali-rolling

# Add build args
ARG aws_access_key_id
ARG aws_secret_access_key
ARG default_region
ARG bucket


WORKDIR /attack

COPY . /attack
RUN ls
RUN chmod +x attack.sh
RUN ./attack.sh $aws_access_key_id $aws_secret_access_key $default_region $bucket

我不确定这是否会执行您想要的操作,因为脚本将在构建期间运行。但是,它将把您的参数从docker build命令传递到的参数attack.sh

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章