cod*_*ada 8 continuous-deployment docker docker-build
我正在配置一个竹子构建计划来构建docker镜像.使用AWS ECS作为注册表.构建计划是这样的;
拉最新的标签
docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest
Run Code Online (Sandbox Code Playgroud)用最新标签构建图像
docker build -t myimage:latest .
Run Code Online (Sandbox Code Playgroud)标记图像(ECS必需)
docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest
Run Code Online (Sandbox Code Playgroud)将图像推送到注册表
docker push xx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest
Run Code Online (Sandbox Code Playgroud)因为构建任务每次都在不同的新构建引擎/服务器上运行,所以它没有本地缓存.
当我不在Dockerfile上更改任何内容并再次执行它(在另一台服务器上)时,我希望docker使用本地缓存(来自docker pull)并且不再执行每一行.但它每次都试图建立图像.我还期待当我在文件底部更改某些内容时,它将使用缓存并仅执行最新行,但我不确定这一点.
我是否知道错误或对方法有任何意见?
你正在考虑使用鱿鱼代理 ?
编辑:如果您不想访问上面的官方网站,这里是鱿鱼代理的快速设置(基于 debian)
apt-get install squid-deb-proxy
Run Code Online (Sandbox Code Playgroud)
然后更改鱿鱼配置以通过打开来创建更大的空间
/etc/squid/squid.conf
Run Code Online (Sandbox Code Playgroud)
并替换#cache_dir ufs /var/spool/squid为cache_dir ufs /var/spool/
squid 10000 16 256
10.000 MB 的缓存空间
然后指向dockerfile中的代理地址,这里是dockerfile带有squid代理的示例
基于 yum 和 apt-get 的发行版:
基于 apt-get 的发行版
`FROM debian
RUN apt-get update -y && apt-get install net-tools
RUN echo "Acquire::http::Proxy \"http://$( \
route -n | awk '/^0.0.0.0/ {print $2}' \
):8000\";" \ > /etc/apt/apt.conf.d/30proxy
RUN echo "Acquire::http::Proxy::ppa.launchpad.net DIRECT;" >> \
/etc/apt/apt.conf.d/30proxy
CMD ["/bin/bash"]`
Run Code Online (Sandbox Code Playgroud)
基于 yum 的发行版
`FROM centos:centos7
RUN yum update -y && yum install -y net-tools
RUN echo "proxy=http://$(route -n | \
awk '/^0.0.0.0/ {print $2}'):3128" >> /etc/yum.conf
RUN sed -i 's/^mirrorlist/#mirrorlist/' \
/etc/yum.repos.d/CentOS-Base.repo
RUN sed -i 's/^#baseurl/baseurl/' \
/etc/yum.repos.d/CentOS-Base.repo
RUN rm -f /etc/yum/pluginconf.d/fastestmirror.conf
RUN yum update -y
CMD ["/bin/bash"]`
Run Code Online (Sandbox Code Playgroud)
假设您在 aws 注册表中安装了鱿鱼代理,只有第一个构建会从互联网获取数据,其余(另一台服务器)构建应该来自缓存的鱿鱼代理。。
这项技术基于书《docker inpractice technology 57》,标题为设置包缓存以加快构建速度
我不认为在没有任何第三方软件的情况下,docker 中有缓存功能。也许有,但我只是不知道。.我不确定,如果我错了请纠正我。。
| 归档时间: |
|
| 查看次数: |
510 次 |
| 最近记录: |