gitlab.com CI docker-撰写
gitlab.com CI docker-compose
我已经 docker 化了我的应用程序并在本地使用 docker-compose
到 运行 它。我想使用我在本地使用的相同 docker-compose
命令在 CI 运行ner 上构建和测试我的应用程序,但我似乎找不到任何关于如何操作的文档?
我正在使用 gitlab.com,documentation 说您应该只使用 docker
图片。只有 docker-compose 似乎不再包含标准图像...
在 GitLab CI 中使用 docker-compose
的最佳方法是什么?
编辑:用例
.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 因为他们不支持它?
Gitlab CI 有自己的 docker 语法,不支持 docker-compose。因此 docker-compose 仅在您使用称为 dind 的机制(docker in docker)时才有效,您必须将主机系统的 docker 套接字挂载到您的CI 跑步者。迟早你会发现这种方法有严重的局限性,可能会引入更多的运行器配置并且缺乏文档。
虽然可能,但你真的应该坚持官方的 gitlab 方式。仔细阅读 https://docs.gitlab.com/ce/ci/docker/using_docker_images.html,您将能够以与 docker-compose 类似的方式轻松使用多个 docker 容器。
我已经 docker 化了我的应用程序并在本地使用 docker-compose
到 运行 它。我想使用我在本地使用的相同 docker-compose
命令在 CI 运行ner 上构建和测试我的应用程序,但我似乎找不到任何关于如何操作的文档?
我正在使用 gitlab.com,documentation 说您应该只使用 docker
图片。只有 docker-compose 似乎不再包含标准图像...
在 GitLab CI 中使用 docker-compose
的最佳方法是什么?
编辑:用例
.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 因为他们不支持它?
Gitlab CI 有自己的 docker 语法,不支持 docker-compose。因此 docker-compose 仅在您使用称为 dind 的机制(docker in docker)时才有效,您必须将主机系统的 docker 套接字挂载到您的CI 跑步者。迟早你会发现这种方法有严重的局限性,可能会引入更多的运行器配置并且缺乏文档。
虽然可能,但你真的应该坚持官方的 gitlab 方式。仔细阅读 https://docs.gitlab.com/ce/ci/docker/using_docker_images.html,您将能够以与 docker-compose 类似的方式轻松使用多个 docker 容器。