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

如何通过Dockerfile将参数传递给bash脚本,bash,docker,Bash,Docker,我有一个简单的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 #!/bin/bash # Getting the host passed as an argumen

我有一个简单的
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
#!/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

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

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
#!/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

因此,参数按以下顺序传递

docker build ---> Dockerfile ---> attack.sh
但是,这不起作用,它为这些变量提供了一个空值


有人能帮我吗?

要让Docker使用构建参数,您需要在Dockerfile中按名称将它们指定为一个。一旦您这样做了,这些变量将可用作参数

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
的参数