如何使用Docker从GitLab CI部署到Google Container Engine实例?

时间:2016-12-06 14:26:35

标签: docker google-compute-engine docker-machine gitlab-ci gitlab-ci-runner

我正在尝试使用GitLab CI运行器设置自动部署,以通过docker-compose部署我们的4容器应用。我可以使用docker pull命令将容器图像拉下来,但我仍然坚持如何连接到Google Compute Engine实例以运行完整的docker-compose脚本。

通常,从我的本地计算机上运行类似:

eval $(docker-machine env <machine-instance>)
docker-compose up -d

但我的.gitlab-ci.yml脚本没有docker-machine可用。

  1. 我是否必须通过我的docker-machine部分安装script .gitlab-ci.yml档案?
  2. 如何在不使用的情况下配置实例 每次创建一个新的?通常,从我当地的主人那里,我愿意 运行docker-machine create ...一次,然后使用eval 上面的命令重新连接到实例。但是这将如何运作呢 与CI?
  3. 以下是我的.gitlab-ci.yml

    的示例
    deploy staging:
        image: docker:latest
        services:
            - docker:dind
        environment: staging
        stage: deploy
        before_script:
            - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN my-registry.githost.io
        script:
            - docker pull my-registry.githost.io/group/project1:develop
            - docker pull my-registry.githost.io/group/project2:develop
            - docker pull my-registry.githost.io/group/project3:develop
            - docker pull my-registry.githost.io/group/project4:develop
            - docker-machine ls
    

2 个答案:

答案 0 :(得分:0)

在这种情况下,不确定你需要什么样的docker-machine。你可能想要摆脱它。

但是回到你的问题,你正在使用的码头图像并不带有docker-machine,也没有docker-compose:

https://github.com/docker-library/docker/blob/36e2107fb879d5d5c3dbb5d8d93aeef0a2d45ac8/1.12/Dockerfile

因此,您需要创建一个安装了这两个图像的新图像(或查找现有图像)。 所以在.gitlab-ci.yml中,而不是image: docker:latest,它将类似于image: mydocker

答案 1 :(得分:0)

您可能必须在GitLab CI Runner中安装docker-machine才能将其与GCE一起使用

https://docs.docker.com/machine/install-machine/

https://docs.docker.com/machine/drivers/gce/