22

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?

2 Answers 2

37

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"
Sign up to request clarification or add additional context in comments.

1 Comment

Works a treat, thanks! Seeing these packages downloading again and again was getting really irritating.
8

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:

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.