I'm using gitlab-ci-multi-runner with docker containers. Everything is going fine, but docker containers don't keep the composer
cache so in every run composer
downloads dependencies again and again, which takes a lot of time. Is there any way to configure gitlab-ci-runner
docker container to keep the composer
cache or mount a volume on each run where the composer
cache is kept?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You could modify the composer cache path and write the stuff to a docker volume.
That storage is persistent and can be shared across containers.
Referencing:
- https://gitlab.com/gitlab-org/gitlab-runner/blob/master/docs/configuration/advanced-configuration.md#volumes-in-the-runnersdocker-section
- https://docs.docker.com/engine/admin/volumes/volumes/
回答2:
You can change the composer cache path by exporting the COMPOSER_CACHE_DIR
environment variable in your runner configuration file, and then add a volume in the [runners.docker]
section to match it.
If you run gitlab-runner as root or with sudo, then your configuration file is located at /etc/gitlab-runner/config.toml
. Otherwise it's located at $HOME/.gitlab-runner/config.toml
.
# config.toml
[[runners]]
name = "Generic Docker Runner"
...
environment = ["COMPOSER_CACHE_DIR=/cache"]
executor = "docker"
[runners.docker]
...
volumes = ["/var/cache:/cache:rw"]
cache_dir = "/cache"