我已将我的应用程序停靠并使用docker-compose
在本地运行它。我想使用我在本地使用的相同docker-compose
命令在CI运行器上构建和测试我的应用程序,但我似乎无法找到有关如何的任何文档?
我正在使用gitlab.com,而documentation表示您应该使用docker
图片。只有docker-compose似乎不再带有标准图像...
将docker-compose
与GitLab CI一起使用的最佳方法是什么?
编辑:用例
.gitlab-ci.yml
image: docker:latest
variables:
DOCKER_DRIVER: overlay
WORKER_TEST_IMAGE: registry.gitlab.com/org/project/worker:$CI_COMMIT_REF_NAME
WORKER_RELEASE_IMAGE: registry.gitlab.com/org/project/worker:latest
services:
- postgres:9.6.3
- docker:dind
stages:
- build
- test
- release
- deploy
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
build_worker:
stage: build
script:
- docker build --pull -t $WORKER_TEST_IMAGE .
- docker push $WORKER_TEST_IMAGE
test_worker:
stage: test
script:
- docker pull $WORKER_TEST_IMAGE
# I need a way to connect the postgres service to the image I'm
# trying to run. Which doesn't seem possible?
# - docker-compose run worker dockerize -wait tcp://postgres:5432 nosetests
- docker run $WORKER_TEST_IMAGE dockerize -wait tcp://postgres:5432 nosetests
...
我觉得Gitlab CI让我重新实现了docker-compose,因为他们不支持它?
答案 0 :(得分:2)
Gitlab CI有自己的docker语法,不支持docker-compose。所以docker-compose只有在你使用一个名为dind的机制(docker中的docker)时才能工作,你必须将主机系统的docker socket挂载到CI运行器中。迟早你会发现这种方法有严重的局限性,可能会引入更多的跑步者配置而缺乏文档。
虽然可能,但你真的应该坚持正式的gitlab方式。仔细阅读https://docs.gitlab.com/ce/ci/docker/using_docker_images.html,您将能够以与docker-compose类似的方式轻松使用多个docker容器。