2015-12-23 5 views
11

У меня есть проект, работающий на Docker с docker-compose для среды dev.Запуск docker-compose на докере gitlab-ci-multi-runner

Я хочу, чтобы он работал на GitLabCI с экземпляром gitlab-ci-multi-runner «Docker mode».

Вот мой .gitlab-ci.yml файл:

image: soullivaneuh/docker-bash 

before_script: 
    - apk add --update bash curl 
    - curl --silent --location https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
    - chmod +x /usr/local/bin/docker-compose 
    - ./configure 
    - docker-compose up -d 

Обратите внимание, что soullivaneuh/docker-bash изображение просто докер изображение с Баш установлен.

Скрипт не будет работать на docker-compose up -d команды:

gitlab-ci-multi-runner 0.7.2 (998cf5d) 
Using Docker executor with image soullivaneuh/docker-bash ... 
Pulling docker image soullivaneuh/docker-bash:latest ... 

Running on runner-1ee5079f-project-3-concurrent-1 via sd-59984... 
Fetching changes... 
Removing app/config/parameters.yml 
Removing docker-compose.env 
HEAD is now at 5c5e7ff remove docker service 
From https://git.dummy.net/project/project 
    5c5e7ff..45e643d docker-ci -> origin/docker-ci 
Checking out 45e643dd as docker-ci... 
Previous HEAD position was 5c5e7ff... remove docker service 
HEAD is now at 45e643d... Remove docker info commands 

$ apk add --update bash curl 
fetch http://dl-4.alpinelinux.org/alpine/v3.2/main/x86_64/APKINDEX.tar.gz 
OK: 10 MiB in 28 packages 
$ curl --silent --location https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
$ chmod +x /usr/local/bin/docker-compose 
$ ./configure 
$ docker-compose up -d 
bash: line 30: /usr/local/bin/docker-compose: No such file or directory 

ERROR: Build failed with: exit code 1 

У меня Absolutly не знаю, почему это не удается.

Спасибо за помощь.

+1

Я наткнулся на ваш вопрос здесь через 10 минут после публикации в поисках того же ответа. Amazing –

ответ

3

No such file or directory вводит в заблуждение. Я получал это много раз, пытаясь запускать динамически связанные двоичные файлы, используя alpine linux (который, по-видимому, вы используете).

Проблема (как я понимаю) заключается в том, что двоичный файл был скомпилирован и связан с glibc, но альпийский использует musl, а не glibc.

Вы можете использовать ldd /usr/local/bin/docker-compose, чтобы сообщить вам, какие библиотеки отсутствуют (или запустите его с помощью strace, если все остальное не получится).

Для его работы может быть проще установить из источника python (https://docs.docker.com/compose/install/#install-using-pip), что и делает официальное изображение (https://github.com/docker/compose/blob/master/Dockerfile.run).

Или вы можете использовать изображение, построенное на debian или другом дистрибутиве, использующем glibc.

+0

Я хотел бы использовать образ на основе debian, но это официальный образ докера. Я бы не хотел создавать мои. Попробуй свои другие решения. – Soullivaneuh

+0

Команда ldd дала мне это: https://gist.github.com/Soullivaneuh/3cee5f17166c856a01fc Я не уверен в результате и что мне делать. – Soullivaneuh

+0

И тогда результат strace: https://gist.github.com/Soullivaneuh/79b09f030965b2e41305 Не очень подробный. – Soullivaneuh