在circleCI上运行docker容器测试
我已经为我的开源代码创建了一些集成测试,我正在寻找一个可公开访问的CI服务来承载它们。由于Travis CI对我所有的容器都有很小的配额,我想我会使用CircleCI。这是我的在circleCI上运行docker容器测试,docker,continuous-integration,integration-testing,docker-compose,circleci,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-t
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)”我的问题是什么?在广泛的支持帮助和一些尝试和错误后,我发现我的配置有两个问题:
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
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
@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
机器:
服务:
-码头工人
依赖项:
覆盖:
-sudo pip安装-U docker compose==1.3.3
测试:
覆盖:
-docker compose-f构建和docker compose-f构建
更新:不再需要它了,CircleCI现在默认使用Docker v1.8.2
您可以按如下方式更新docker版本:
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
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
您可以将amazon S3链接中的
1.8.2
替换为您想要的版本您可以使用--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
这对你有用吗?docker的curl安装在我运行时失败。它不再工作。我目前正试图纠正这一点。