Можно кружить 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