我目前在django应用程序中有一些服务,例如db和web,而docker-compose用于将它们串在一起。
网络版有这样的代码..
web:
restart: always
build: ./web
expose:
- "8000"
web中的docker文件有python2.7-onbuild,因此它使用requirements.txt文件来安装所有必需的依赖项。
我现在使用圆形CI进行集成,并且像这样有一个circle.yml文件..
....
dependencies:
pre:
- pip install -r web/requirements.txt
....
无论如何,我可以避免圈yml文件中的依赖项子句。
相反,如果有意义,我希望Circle CI使用docker-compose.yml。
答案 0 :(得分:18)
是的,在docker-compose
文件中使用circle.yml
可以很好地运行测试,因为它可以非常接近地反映dev环境。这是我们对AngularJS项目的工作测试的摘录:
---
machine:
services:
- docker
dependencies:
override:
- docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
- sudo pip install --upgrade docker-compose==1.3.0
test:
pre:
- docker-compose pull
- docker-compose up -d
- docker-compose run npm install
- docker-compose run bower install --allow-root --config.interactive=false
override:
# grunt runs our karma tests
- docker-compose run grunt deploy-build compile
注意:
docker login
。circle.yml
文件时,只有docker-compose 1.3可用。这可能现在更新了。答案 1 :(得分:3)
我自己没有尝试过,但根据这里的信息https://circleci.com/docs/docker我猜它可能有效
# circle.yml
machine:
services:
- docker
dependencies:
pre:
- pip install docker-compose
test:
pre:
- docker-compose up -d
答案 2 :(得分:3)
不幸的是,circleCI默认安装旧版本的Docker 1.9.1,它与最新版本的docker-compose不兼容。为了获得更新鲜的docker版本1.10.0,您应该:
machine:
pre:
- curl -sSL https://s3.amazonaws.com/circle-downloads/install-circleci-docker.sh | bash -s -- 1.10.0
- pip install docker-compose
services:
- docker
test:
pre:
- docker-compose up -d
了解详情:https://discuss.circleci.com/t/docker-1-10-0-is-available-beta/2100
UPD:Circle版本2上的Native-Docker支持。
在此处阅读有关如何切换到新的Circle CI版本的更多信息:https://circleci.com/docs/2.0/migrating-from-1-2/