如何解决AWS Codeartifact 和 docker 构建缓存
我正在尝试使用 AWS Codeartifact 作为我的 pip 存储库。 每次构建 docker 镜像时,我都需要登录或生成令牌, 我试过这个:How to use AWS CodeArtifact *within* A Dockerfile in AWSCodeBuild
但是在每次构建中,pip.conf 文件都是不同的(新令牌),这会破坏 docker 缓存。
现在我想避免预装所有软件包的基础镜像。
谢谢!
解决方法
看起来 docker buildkit 就是答案。
生成文件:
docker_build:
@$(eval CODEARTIFACT_AUTH_TOKEN := $(shell aws codeartifact get-authorization-token --domain your-domain --domain-owner your-id --region your-region --query authorizationToken --output text --duration-seconds 900))
@pip config set global.index-url "https://aws:${CODEARTIFACT_AUTH_TOKEN}@<your-domain>-<your-id>.d.codeartifact.<your-region>.amazonaws.com/pypi/your-repo/simple/"
cp ~/.config/pip/pip.conf /tmp/pip.conf
DOCKER_BUILDKIT=1 docker build --progress=plain --secret id=pip.conf,src=/tmp/pip.conf -t tmp_docker_image .
Dockerfile:
FROM python:3.8.8-slim-buster
WORKDIR /code
ADD requirements.txt /code/requirements.txt
RUN --mount=type=secret,id=pip.conf,dst=/root/.pip/pip.conf \
pip install -r ./requirements.txt
我已经测试了几次,每次运行都更改了令牌,看起来不错。
这个有帮助:https://dev.to/hugoprudente/managing-secrets-during-docker-build-3682
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。