我有一个Dockerfile,该文件从安装texlive-full软件包开始,这是巨大的并且需要很长时间。如果docker build
在本地,则将缓存安装后创建的中间映像,并且后续构建速度很快。
但是,如果我推送到自己的GitLab安装程序,并且启动了GitLab-CI构建运行程序,则这似乎总是从头开始,重新下载FROM
映像,然后再次执行apt-
get安装。对我来说,这似乎是一个巨大的浪费,因此,我试图弄清楚如何获取GitLab DinD图像来缓存两次构建之间的中间图像,到目前为止还算不上运气。
我已经使用了尝试--cache-dir
,并--docker-cache-dir
为gitlab-runner register
命令,都无济于事。
这甚至是gitlab-runner DinD图像应该能够执行的操作吗?
我的.gitlab-ci.yml
:
build_job:
script:
- docker build --tag=example/foo .
我的Dockerfile
:
FROM php:5.6-fpm
MAINTAINER Roel Harbers <roel.harbers@example.com>
RUN apt-get update && apt-get install -qq -y --fix-missing --no-install-recommends texlive-full
RUN echo Do other stuff that has to be done every build.
我使用GitLab CE 8.4.0和gitlab / gitlab-runner:latest作为运行器,启动为
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/gitlab-ci-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest \
; \
赛跑者使用以下方式注册:
docker exec -it gitlab-runner gitlab-runner register \
--name foo.example.com \
--url https://gitlab.example.com/ci \
--cache-dir /cache/build/ \
--executor docker \
--docker-image gitlab/dind:latest \
--docker-privileged \
--docker-disable-cache false \
--docker-cache-dir /cache/docker/ \
; \
这将创建以下内容config.toml
:
concurrent = 1
[[runners]]
name = "foo.example.com"
url = "https://gitlab.example.com/ci"
token = "foobarsldkflkdsjfkldsj"
tls-ca-file = ""
executor = "docker"
cache_dir = "/cache/build/"
[runners.docker]
image = "gitlab/dind:latest"
privileged = true
disable_cache = false
volumes = ["/cache"]
cache_dir = "/cache/docker/"
(我已经尝试与不同的值cache_dir
,docker_cache_dir
并且disable_cache
,都具有相同的结果:没有任何缓存)
我想您的问题没有简单的答案。在添加一些细节之前,我强烈建议您阅读DinD维护者的这篇博客文章,该文章最初被命名为“请勿在Docker for CI中使用Docker”。
您可以尝试将其声明/var/lib/docker
为GitLab运行程序的卷。但请注意,根据您的文件系统驱动程序,您可能会在主机上AUFS文件系统上的容器中使用AUFS,这很可能会引起问题。
我建议您创建一个 单独的 Docker-
VM,仅用于运行器,然后将docker.sock
VM的绑定安装到运行器容器中。我们在GitLab上成功使用了该设置(在大约12个月内构建了>
27.000)。
您可以看看我们的跑步者,它的docker-compose
支持实际上基于GitLab跑步者的shell执行器。
问题内容: 我和我的朋友们在一个网站上工作,我们希望在其中缓存某些图像,以便将来更快地显示它们。我有两个主要问题: 您如何缓存图像? 图像被缓存后如何使用?(只是为了验证图像是否在页面A上缓存,可以从缓存中调用它以在页面B上使用它,对吗?) 此外,有可能设置 时, 图像的缓存版本将到期? 如果包括示例和/或进一步描述页面的链接,将不胜感激。 使用原始Javascript或jQuery版本都可以。
WordPress的示例短代码: 现在在上面的短代码中。代码中使用了一个图像。我想要获得图像,并在服务器中创建一个缓存,这样每个使用这个短代码的人都可以查看图像。目前,我正在使用base64编码的图像。
问题内容: 我正在将gitlab-ci-multi- runner与docker容器一起使用。一切正常,但是docker容器不保留缓存,因此在每次运行中都一次又一次下载依赖项,这需要很多时间。有什么方法可以配置docker容器以保留高速缓存或在每次保存高速缓存的运行上安装卷? 问题答案: 您可以修改作曲家的缓存路径,并将其写入Docker卷。 该存储是持久性的,可以在容器之间共享。 引用: htt
问题内容: 问题描述: 我正在创建一个滚动的带有缩略图的文章列表,该列表由我的SQLite数据库填充。通常,它运行缓慢,但速度较慢: 图像加载非常缓慢…我想使用“ 通用图像加载器 ”将图像缓存在设备上,如果您已经查看过图像(或者至少接近该图像,那会使它们看起来只是滚动到视图中) )。但是- 当您向上/向下拖动时,没有任何图像,然后在3-5秒后,图像开始弹出(就像重新下载它们一样) 我正在动态更改缩
问题内容: 在我的应用程序中,我在div中有一个图像,一个按钮。 我想旋转显示的图像,并在使用jquery单击按钮时保存旋转的图像。 我已经使用了代码: http://code.google.com/p/jquery-rotate/ 和jQuery代码: html代码: 当我使用上述代码时,有两个图像,一个是旧图像,另一个是旋转图像。 在这里我想旋转相同的图像并仅显示旋转的图像。并将旋转的图像保存
问题内容: 我正在尝试学习使用pygame制作基本游戏。我想导入并显示.png格式的图像。到目前为止,我的尝试是: 图像(clouds.png)与文件位于同一文件夹中。当我尝试运行此程序时,出现错误: 问题答案: 干得好。它将图像变为0,0。另一个问题是您的pyimage似乎不是由png支持构建的