在circleCI上运行docker-container测试

时间:2015-07-03 19:32:27

标签: docker continuous-integration integration-testing docker-compose circleci

我为我的开源代码创建了一些集成测试,我正在寻找一个可公开访问的CI服务来托管它们。由于Travis-CI必须为我的所有容器配备小配额,我想我会使用CircleCI。这是我的cirle.yml

machine:
    services:
        - docker
dependencies:
    override:
        - pip install docker-compose
test:
    override:
        - cd integration-tests && docker-compose run --rm runner

但是在运行之后我收到错误消息“客户端和服务器没有相同的版本(客户端:1.18,服务器:1.16)”我的问题是什么?

4 个答案:

答案 0 :(得分:2)

@zefciu这个配置对我有用

machine:
  services:
    - docker

dependencies:
  override:
    - sudo pip install -U docker-compose==1.3.3

test:
  override:
    - docker-compose -f <compose-file> build && docker-compose -f <compose-file> up

答案 1 :(得分:1)

在Support的大量帮助和一些试验和错误的帮助下,我发现配置存在两个问题:

  1. CircleCI上的默认泊坞窗版本与最新的docker-compose不兼容。
  2. 无法移除容器,因此即使测试通过, - rm标志也会导致构建变为红色。
  3. 因此,正确的配置如下所示:

     machine:
            services:
                - docker
            pre:
                - sudo curl -sSL https://get.docker.com/ | sh
        dependencies:
            override:
                - pip install docker-compose
        test:
            override:
                - cd integration-tests && docker-compose run runner
    

答案 2 :(得分:0)

更新:不再需要了,CircleCI现在默认使用Docker v1.8.2

您可以像这样更新docker版本:

/Users/abhinav/Library/Developer/CoreSimulator/Devices/8C8ACA37-0D0F-4FED-A431-BA35EF9F08F1/data/Containers/Data/Application/20B049C0-9A0D-4826-9867-027607D02715/Documents/AllBooking.json

您可以将亚马逊S3链接中的machine: services: - docker pre: - docker --version - sudo curl -L -o /usr/bin/docker 'http://s3-external-1.amazonaws.com/circle-downloads/docker-1.8.2-circleci' - sudo chmod 0755 /usr/bin/docker - docker --version 替换为您想要的版本

答案 3 :(得分:0)

您可以在运行容器时使用--net=host执行此操作,这样您就可以通过localhost访问Circle CI服务了。有了这个,你不需要使用docker-compose。 Circle CI为您提供大多数服务。

machine:
  services:
    - docker
    - mysql
    - redis

  ...

  test:
    override:
      - |
          docker run \
            --net=host \
            --env MYSQL_HOST=localhost \
            --env MYSQL_PORT=3306 \
            --env MYSQL_DATABASE=circle_test \
            --env MYSQL_USERNAME=ubuntu \
            --env REDIS_HOST=localhost \
            --env REDIS_PORT=$REDIS_PORT \
            my/container runner