可以圈ci使用docker-compose来构建环境

时间:2015-08-03 12:35:27

标签: django docker-compose circleci

我目前在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。

3 个答案:

答案 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 hub中有私有映像时才需要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/