I am running a slef-hosted gitlab instance. For my pipelines I am using docker-in-docker (dind). I build my container and run my tests on it.
Recently I added pandas as a dependency and now it takes ages to run the pipelines. I would like to somehow cache my builds so I don’t have to build the docker container everytime anew. The problem is that I am reading alot that I can’t do that with docker-in-docker. Is that really so or can I somehow adjust either my config.toml
or my gitlab-ci.yml
to cache the dependencies?
My gitlab-ci.yml looks like this:
image: docker:19.03.0
variables:
DOCKER_DRIVER: overlay2
# Create the certificates inside this directory for both the server
# and client. The certificates used by the client will be created in
# /certs/client so we only need to share this directory with the
# volume mount in `config.toml`.
DOCKER_TLS_CERTDIR: "/certs"
services:
- docker:19.03.0-dind
stages:
- unittests
- publish-doc
tests-website:
stage: unittests
before_script:
- apk update
- apk upgrade
- apk add python python-dev py-pip build-base libffi-dev openssl-dev libgcc
- pip install docker-compose
script:
- docker-compose -f test-headless.yml build
- docker-compose -f test-headless.yml up --no-start
- docker-compose -f test-headless.yml start selenium
- docker-compose -f test-headless.yml run django pytest
tags:
- docker
Help on how to set this up would be very much appreciated. Thanks in advance!!