我要求在容器构建期间从AWS S3下载文件,但是我没有成功地将AWS证书提供给构建过程,而实际上并没有在Dockerfile中对它们进行硬编码.我收到错误:
docker fatal error: Unable to locate credentials
尽管以前执行过:
aws configure
而且,我无法为此目的使用–build-arg.
我的问题:是否可以在构建时使用这些凭据而无需在Dockerfile中对其进行硬编码,如果是这样的话?
感谢您的关注.
最佳答案 使用–build-arg标志是正确的方法,但是你必须使用ARG指令,而不是ENV指令在Dockerfile中指定它们.
以下是我使用AWS凭据的Dockerfile示例.它将aws凭据作为构建参数,包括AWS_REGION构建参数的默认参数.然后它执行基本的aws操作,在这种情况下登录到ecr.
FROM <base-image>:latest # an image I have that has `aws` installed
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
ARG AWS_REGION=us-west-2
RUN aws ecr get-login --no-include-email | bash
CMD ["npm", "start"]
然后使用以下命令构建映像:
docker build -t testing --build-arg AWS_ACCESS_KEY_ID=<Your ID Here> \
--build-arg AWS_SECRET_ACCESS_KEY=<Your Key Here> .
希望这可以帮助.