Circle CI是否可以使用docker-compose构建环境?

13

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

Web版本的代码如下所示...

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。

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 Hub 上有私有镜像,则只需要使用 docker login
  • 当我们编写我们的circle.yml文件时,只有Docker Compose 1.3可用。现在可能已经更新。

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

更新:Circle版本2支持原生Docker。

了解如何切换到新的Circle CI版本,请查看此处:https://circleci.com/docs/2.0/migrating-from-1-2/


你知道这个是否支持实时构建图像吗? - mrBorna

3
我个人没有试过,但是根据这里的信息https://circleci.com/docs/docker,我猜可能会有效。
# circle.yml
machine:
  services:
    - docker

dependencies:
  pre:
    - pip install docker-compose

test:
  pre:
    - docker-compose up -d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接