20

I made a simple Dockerfile:

FROM openjdk EXPOSE 8080 

and built an image using:

docker build -t test . 

I installed and configured a docker GitLab CI runner and now I would like to use this runner with my test image. So I wrote the following .gitlab-ci.yml file:

image: test run: script: - echo "Hello world!" 

But to my disappointment, the local test image that I can use on my machine was not found.

Running with gitlab-ci-multi-runner 9.4.2 (6d06f2e) on martin-docker-rawip (70747a61) Using Docker executor with image test ... Using docker image sha256:fa91c6ea64ce4b9b44672c6e56eed8312d0ec2afc80730cbee7754bc448ea22b for predefined container... Pulling docker image test ... ERROR: Job failed: Error response from daemon: repository test not found: does not exist or no pull access 

I do not even know what is going on anymore. How can I make the runner aware of this image that I made?

8
  • Post your gitlab-ci-multi-runner command that you have used Commented Aug 10, 2017 at 13:27
  • @TarunLalwani I am not sure what you mean. I did not run that command directly. I just commit my changes to gitlab-ci.yml and the process is triggered automatically. Commented Aug 10, 2017 at 13:33
  • Each Gitlab runner has an executor, which determines how and where the script you made gets executed (docs.gitlab.com/runner/#using-gitlab-runner). So if it is a Shell or SSH runner and you have build the image on that runner host then this can work Commented Aug 10, 2017 at 13:37
  • @TarunLalwani I am using a docker executor. So this may be the reason it does not work. Maybe I can set up a local docker registry and serve my test image from there... Commented Aug 10, 2017 at 13:42
  • Yes, because it will spinup a new container everytime Commented Aug 10, 2017 at 13:43

1 Answer 1

13

I had the same question. And I found the answer here: https://forum.gitlab.com/t/runner-cant-use-local-docker-images/5507/6

Add the following in the /etc/gitlab-runner/config.toml

[runners.docker] # more config for the runner here... pull_policy = "if-not-present" 

More info here: https://docs.gitlab.com/runner/executors/docker.html#how-pull-policies-work

My Dockerfile

FROM node:latest RUN apt-get update -y && apt-get install openssh-client rsync -y 

On the runner I build the image:

docker build -t node_rsync . 

The .gitlab-ci.yml in the project using this runner.

image: node_rsync job: stage: deploy before_script: # now in the custom docker image #- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - mkdir -p ~/.ssh - eval $(ssh-agent -s) - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' - ssh-add <(tr '@' '\n' <<< "$STAGING_PRIVATE_KEY" | base64 --decode) # now in the custom docker image #- apt-get install -y rsync script: - rsync -rav -e ssh --exclude='.git/' --exclude='.gitlab-ci.yml' --delete-excluded ./ $STAGING_USER@$STAGING_SERVER:./deploy/ only: - master tags: - ssh 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.