Error when using docker images defined as variables
I have a $NODE_DOCKER_IMAGE variable which I use to reference the same node image tag in a number of jobs. I could change this to hardcoded without much trouble, but in case it's trivial to support a variable-derived image, here's a snippet of my gitlab-ci.yml
and the corresponding error.
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ''
NODE_DOCKER_IMAGE: "node:14"
stages:
- unit-test
- get-version
- build
build:
image: "$NODE_DOCKER_IMAGE"
stage: build
script:
- export APP_VERSION="$(cat VERSION.txt)"
- echo "APP_VERSION is ${APP_VERSION}"
- npm ci
- npm run build
artifacts:
paths:
- dist
» gle "unit test"
2022-11-29 10:40:33,498 gitlab-emulator pulling docker image $NODE_DOCKER_IMAGE
Pulling $NODE_DOCKER_IMAGE...
Traceback (most recent call last):
File "/opt/homebrew/lib/python3.10/site-packages/docker/api/client.py", line 268, in _raise_for_status
response.raise_for_status()
File "/opt/homebrew/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://docker.local:2375/v1.41/images/create?tag=latest&fromImage=%24NODE_DOCKER_IMAGE
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/homebrew/bin/gle", line 8, in <module>
sys.exit(run())
File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/runner.py", line 420, in run
execute_job(loader.config, jobname, seen=executed_jobs, recurse=options.FULL)
File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/runner.py", line 160, in execute_job
jobobj.run()
File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/jobs.py", line 434, in run
self.run_impl()
File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/docker.py", line 391, in run_impl
self.docker.pull()
File "/opt/homebrew/lib/python3.10/site-packages/gitlabemu/docker.py", line 97, in pull
self.client.images.pull(self.image)
File "/opt/homebrew/lib/python3.10/site-packages/docker/models/images.py", line 465, in pull
pull_log = self.client.api.pull(
File "/opt/homebrew/lib/python3.10/site-packages/docker/api/image.py", line 429, in pull
self._raise_for_status(response)
File "/opt/homebrew/lib/python3.10/site-packages/docker/api/client.py", line 270, in _raise_for_status
raise create_api_error_from_http_exception(e) from e
File "/opt/homebrew/lib/python3.10/site-packages/docker/errors.py", line 39, in create_api_error_from_http_exception
raise cls(e, response=response, explanation=explanation) from e
docker.errors.APIError: 400 Client Error for http://docker.local:2375/v1.41/images/create?tag=latest&fromImage=%24NODE_DOCKER_IMAGE: Bad Request ("invalid reference format: repository name must be lowercase")