Подтвердить что ты не робот

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

В настоящее время у меня есть несколько сервисов, таких как db и web, в приложении django, а 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, если это имеет смысл.

4b9b3361

Ответ 1

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

Ответ 2

Я не пробовал это сам, но на основе информации здесь 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 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/