我为我的开源代码创建了一些集成测试,我正在寻找一个可公开访问的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)”我的问题是什么?
答案 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的大量帮助和一些试验和错误的帮助下,我发现配置存在两个问题:
因此,正确的配置如下所示:
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