Можно кружить ci использовать docker-compose для построения среды

В настоящее время у меня есть несколько сервисов, таких как db и web, в приложении django, и docker-compose используется для их объединения.

В веб-версии есть такой код

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

Файл docker в сети имеет python2.7-onbuild, поэтому для установки всех необходимых зависимостей он использует файл needs.txt.

Сейчас я использую круг CI для интеграции и у меня есть файл circle.yml, как это..

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

В любом случае, я мог бы избежать предложения зависимости в файле круга YML.

Вместо этого я хотел бы, чтобы Circle CI использовал вместо этого docker-compose.yml, если это имеет смысл.

3 ответа

Решение

Да, используя docker-compose в circle.yml file может быть хорошим способом запуска тестов, потому что он может очень близко отражать среду разработки. Вот выдержка из наших рабочих тестов по проекту 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. Это, вероятно, обновлено сейчас.

К сожалению, circleCI по умолчанию устанавливает старую версию Docker 1.9.1, которая не совместима с последней версией docker-compose. Чтобы получить более свежую версию докера 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 в Circle версии 2.

Подробнее о том, как перейти на новую версию Circle CI, читайте здесь: https://circleci.com/docs/2.0/migrating-from-1-2/

Я не пробовал это сам, но на основе информации здесь https://circleci.com/docs/docker Я думаю, это может работать

# circle.yml
machine:
  services:
    - docker

dependencies:
  pre:
    - pip install docker-compose

test:
  pre:
    - docker-compose up -d
Другие вопросы по тегам