在docker gitlab-ci-runner上运行docker-compose

Sou*_*euh 11 docker gitlab-ci gitlab-ci-runner docker-compose

我在Docker上运行了一个带有docker-compose for dev环境的项目.

我想通过gitlab-ci-multi-runner"Docker mode"实例在GitLabCI上运行它.

这是我的.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
Run Code Online (Sandbox Code Playgroud)

请注意,soullivaneuh/docker-bash图像只是安装了bash的docker镜像.

脚本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
Run Code Online (Sandbox Code Playgroud)

我绝对不知道为什么会失败.

感谢帮助.

dne*_*hin 3

这No such file or directory是误导性的。我在尝试使用 alpine linux (看起来您正在使用)运行动态链接的二进制文件时收到过很多次。

问题(据我所知)是二进制文件是针对 glibc 编译和链接的,但 alpine 使用 musl,而不是 glibc。

您可以用来ldd /usr/local/bin/docker-compose告诉您缺少哪些库(或者strace如果其他所有方法都失败则运行它)。

为了让它工作,从 python 源安装可能更容易(https://docs.docker.com/compose/install/#install-using-pip),这就是官方 compose 映像的作用(https:// github.com/docker/compose/blob/master/Dockerfile.run)。

或者您可以使用基于 debian 或其他使用 glibc 的发行版构建的映像。