2015-08-03 52 views
13

我目前在django應用程序中有一些服務,例如db和web,並且使用docker-compose將它們串在一起。可以圈ci使用docker-compose構建環境

的網頁版本有這樣的代碼..

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

在網絡的搬運工文件有python2.7-onbuild,所以它使用requirements.txt文件來安裝所有必要的依賴。

我現在用的集成圈子CI和有這樣的circle.yml文件..

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

反正我有可能避免在圈內YML文件的依賴關係子句。

相反,我想讓Circle CI使用docker-compose.yml來代替,如果這樣做有道理的話。

回答

17

是的,在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 login
  • 當我們編寫我們的circle.yml文件時,只有docker-compose 1.3可用。這現在可能已更新。
3

我還沒有嘗試過這個自己,但基於這裏的信息https://circleci.com/docs/docker我猜它可能工作

# circle.yml 
machine: 
    services: 
    - docker 

dependencies: 
    pre: 
    - pip install docker-compose 

test: 
    pre: 
    - docker-compose up -d 
3

不幸的是,circleCI默認安裝了與最新版本的docker-compose不兼容的舊版Docker 1.9.1。爲了獲得更多的新鮮泊塢窗版本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:2

閱讀圈的版本本機支持多克多信息如何在這裏切換到新的Circle CI版本:https://circleci.com/docs/2.0/migrating-from-1-2/

+0

你知道這是否支持實際構建圖像? – mrBorna