2016-12-06 1 views
2

Gitlab CI를 설정하여 도커 이미지를 만들고 Gitlab 레지스트리로 푸는 데 문제가 있습니다. Gitlab에서 제공하는 공유 러너를 사용하려고합니다. 빌드가 실패 어떤 '고정 표시기'명령을 도달 내가 읽은 바로는,이이 메시지와 함께 즉시, 그러나, 아무리 내가 무엇을하려고 할 수 없어야한다 :gitlab ci 공유 러너로 도커 이미지 만들기

$ docker build --pull -t $CONTAINER_TEST_IMAGE . 
/bin/bash: line 54: docker: command not found 

내가 사용하고 다음을 CI 구성 :

image: "ruby:2.3" 

services: 
    - docker:dind 
    - postgres:latest 

variables: 
    POSTGRES_DB: test-db 
    CONTAINER_TEST_IMAGE: registry.gitlab.com/pha3l/gitlab-ci-test-project:$CI_BUILD_REF_NAME 
    CONTAINER_RELEASE_IMAGE: registry.gitlab.com/pha3l/gitlab-ci-test-project:latest 

cache: 
    paths: 
    - vendor/ruby 

stages: 
    - build 
    - test 
    - release 
    - deploy 


before_script: 
    - ruby -v        
    - gem install bundler --no-ri --no-rdoc 
    - bundle install -j $(nproc) --path vendor 

rubocop: 
    script: 
    - rubocop 

rails: 
    variables: 
    DATABASE_URL: "postgresql://postgres:[email protected]:5432/$POSTGRES_DB" 
    script: 
    - bundle exec rake db:migrate 
    - bundle exec rake db:seed 
    - bundle exec rake test 

build: 
    stage: build 
    script: 
    - docker build --pull -t $CONTAINER_TEST_IMAGE . 
    - docker push $CONTAINER_TEST_IMAGE 

release-image: 
    stage: release 
    script: 
    - docker pull $CONTAINER_TEST_IMAGE 
    - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE 
    - docker push $CONTAINER_RELEASE_IMAGE 
    only: 
    - master 

deploy: 
    stage: deploy 
    script: 
    - echo 'Do the deploy!' 
    only: 
    - master 

답변

1

에만 고정 표시기에 고정 표시기를 실행에 당신을 허용, 이미지에 고정 표시기 바이너리를 추가하지 마십시오이 줄

services: 
    - docker:dind 

처럼 보인다. ruby : 2.3을 기반으로 자신 만의 이미지를 만들고 docker 유틸리티를 명시 적으로 추가해야 할 수도 있습니다. Dockerfile은 다음과 같아야합니다.

FROM ruby:2.3 
MAINTAINER maintaner 

# install docker 
RUN apt-get update && \ 
    apt-get install -y apt-transport-https ca-certificates gnupg2 

RUN apt-key adv \ 
    --keyserver hkp://p80.pool.sks-keyservers.net:80 \ 
    --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 

RUN echo "deb https://apt.dockerproject.org/repo debian-jessie main" | tee /etc/apt/sources.list.d/docker.list 
RUN apt-get update && \ 
    apt-get install -y docker-engine 
+1

고맙습니다. 첫 번째 단계에서는 루비 환경이 필요하지 않지만 생성하는 컨테이너에서만 루비 환경이 필요 없다는 사실을 알게되었습니다. 나는 도커를 사용하여이 문제를 해결했다 : git 이미지를베이스로 만들고 생성 한 컨테이너에 대한 Dockerfile을 작성했다. – lmerry213