如何通过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
的参数