[英]Building container from Windows (local) or Linux (AWS EC2) has different effects
我一直在玩 AWS Batch,我无法理解为什么当我从本地 windows 机器构建 docker 图像并将其推送到 ECR 时一切正常,而当我从 ubuntu EC2 执行此操作时它不起作用实例。 我在下面展示的内容改编自本教程。
docker 文件非常简单:
FROM python:3.6.10-alpine
RUN apk add --no-cache --upgrade bash
COPY ./ /usr/local/aws_batch_tutorial
RUN pip3 install -r /usr/local/aws_batch_tutorial/requirements.txt
WORKDIR /usr/local/aws_batch_tutorial
其中本地文件夹包含以下 bash 脚本 ( run_job.sh
):
#!/bin/bash
error_exit () {
echo "${BASENAME} - ${1}" >&2
exit 1
}
################################################################################
###### Convert envinronment variables to command line arguments ########
pat="--([^ ]+).+"
arg_list=""
while IFS= read -r line; do
# Check if line contains a command line argument
if [[ $line =~ $pat ]]; then
E=${BASH_REMATCH[1]}
# Check that a matching environmental variable is declared
if [[ ! ${!E} == "" ]]; then
# Make sure argument isn't already include in argument list
if [[ ! ${arg_list} =~ "--${E}=" ]]; then
# Add to argument list
arg_list="${arg_list} --${E}=${!E}"
fi
fi
fi
done < <(python3 script.py --help)
################################################################################
python3 -u script.py ${arg_list} | tee "${save_name}.txt"
aws s3 cp "./${save_name}.p" "s3://bucket/${save_name}.p" || error_exit "Failed to upload results to s3 bucket."
aws s3 cp "./${save_name}.txt" "s3://bucket/logs/${save_name}.txt" || error_exit "Failed to upload logs to s3 bucket."
它还包含一个包含三个包( awscli
、 boto3
、 botocore
)的requirement.txt
文件,以及一个虚拟 python 脚本( script.py
),该脚本仅列出 s3 存储桶中的文件并将列表保存在一个文件中,然后上传到 s3。
在我的本地 windows 环境和 EC2 实例中,我都使用aws configure
设置了我的 AWS 凭证,在这两种情况下,我都可以成功构建图像、标记它并将其推送到 ECR。 当我在 AWS Batch 上提交作业时出现问题,它应该使用命令["./run_job.sh"]
运行 ECR 容器:
状态原因:任务启动失败
我想知道是否有人知道可能导致错误的原因。
我想我解决了这个问题。 docker 图像中的run_job.sh
脚本必须具有执行权限才能由 AWS Batch 运行(但我认为这通常是正确的)。 出于某种原因,当从 Windows 构建图像时,脚本具有此权限,但当从 linux(aws ec2 - ubuntu 实例)构建图像时则没有。 我通过在 Dockerfile 中添加以下行解决了这个问题:
RUN chmod u+x run_job.sh
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.