circle ci能否使用docker-compose搭建环境

Can circle ci use docker-compose to build the environment

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

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

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

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

# circle.yml
machine:
  services:
    - docker

dependencies:
  pre:
    - pip install docker-compose

test:
  pre:
    - docker-compose up -d

是的,在 circle.yml 文件中使用 docker-compose 是 运行 测试的好方法,因为它可以非常接近地反映开发环境。这是我们对 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 集线器中有私有图像时才需要 docker login
  • 当我们编写 circle.yml 文件时,只有 docker-compose 1.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: Native-Docker support on Circle version 2.

在此处阅读有关如何切换到新 Circle CI 版本的更多信息:https://circleci.com/docs/2.0/migrating-from-1-2/