13

我目前在 django 应用程序中有一些服务,例如 db 和 web,并且使用 docker-compose 将它们串在一起。

网页版有这样的代码..

web:
  restart: always
  build: ./web
  expose:
    - "8000"

web 中的 docker 文件有 python2.7-onbuild,所以它使用 requirements.txt 文件来安装所有必要的依赖项。

我现在正在使用 circle CI 进行集成,并且有一个这样的 circle.yml 文件。

....
dependencies:
  pre:
    -  pip install -r web/requirements.txt
....

无论如何我可以避免circle yml文件中的依赖子句。

相反,如果有意义的话,我希望 Circle CI 使用 docker-compose.yml 。

4

3 回答 3

18

是的,docker-composecircle.yml文件中使用可能是运行测试的好方法,因为它可以非常接近地反映开发环境。这是我们对 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您在 docker hub 中有私有图像时才需要。
  • 当我们编写circle.yml文件时,只有 docker-compose 1.3 可用。这可能现在更新了。
于 2015-09-30T08:17:25.003 回答
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/

于 2016-10-31T01:36:10.537 回答
3

我自己没有尝试过,但根据这里的信息https://circleci.com/docs/docker我猜它可能有效

# circle.yml
machine:
  services:
    - docker

dependencies:
  pre:
    - pip install docker-compose

test:
  pre:
    - docker-compose up -d
于 2015-08-03T15:13:09.037 回答