2015-12-23 13 views
11

Ho un progetto in esecuzione su Docker con docker-compose per l'ambiente di sviluppo.Esecuzione della finestra mobile: comporre su una finestra mobile gitlab-ci-multi-runner

Voglio farlo funzionare su GitLabCI con un'istanza "Docker mode" gitlab-ci-multi-runner.

Ecco il mio file .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 

Nota che l'immagine soullivaneuh/docker-bash è solo un'immagine di finestra mobile con bash installato.

Lo script non riesce a docker-compose up -d comando:

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 

Non ho assolutamente idea del perché questo sta venendo a mancare.

Grazie per l'aiuto.

+1

Ho trovato la tua domanda qui 10 minuti dopo la pubblicazione cercando la stessa risposta. Amazing –

risposta

3

Il No such file or directory è fuorviante. L'ho ricevuto molte volte durante il tentativo di eseguire binari collegati dinamicamente usando Alpine Linux (che sembra si stia utilizzando).

Il problema (a quanto ho capito) è che il file binario è stato compilato e collegato a glibc, ma alpino usa musl, non glibc.

È possibile utilizzare ldd /usr/local/bin/docker-compose per indicare quali librerie mancano (o eseguirlo con strace se tutto il resto fallisce).

Per farlo funzionare, potrebbe essere più semplice da installare da Python source (https://docs.docker.com/compose/install/#install-using-pip), che è ciò che fa l'immagine di composizione ufficiale (https://github.com/docker/compose/blob/master/Dockerfile.run).

Oppure è possibile utilizzare un'immagine creata su debian o un'altra distribuzione che utilizza glibc.

+0

Mi piacerebbe usare un'immagine basata su Debian, ma è l'immagine ufficiale della finestra mobile. Mi piacerebbe non creare il mio. Proverò le tue altre soluzioni. – Soullivaneuh

+0

Il comando ldd mi ha dato questo: https://gist.github.com/Soullivaneuh/3cee5f17166c856a01fc Non sono sicuro del risultato e cosa dovrei fare. – Soullivaneuh

+0

E poi il risultato strace: https://gist.github.com/Soullivaneuh/79b09f030965b2e41305 Non proprio dettagliato. – Soullivaneuh