【问题标题】:Deploy docker private image to compute engine instance by using GCP使用 GCP 部署 docker 私有镜像到计算引擎实例
【发布时间】:2020-02-09 11:11:19
【问题描述】:
stages:
  - build
  - docker-push
  - deploy

cache:
  paths:
    - node_modules/

build:
  stage: build
  image: node:latest
  script:
    - yarn install
    - npm run build
  artifacts:
    paths:
      - dist/

docker:
  stage: docker-push
  image: docker:18.09.7

  services:
    - docker:18.09.7-dind

  script:
    - docker login --username=$DOCKER_USERNAME --password=$DOCKER_PASSWORD
    - docker tag $DOCKER_REPOSITORY:$CI_RUNNER_ID $DOCKER_REPOSITORY:latest
    - docker push $DOCKER_REPOSITORY

test:
  stage: deploy
  image: google/cloud-sdk:latest
  script:
    - echo $GCP_ACCESS_JSON > /tmp/$CI_PIPELINE_ID.json
    - gcloud auth activate-service-account $GCP_CE_PROJECT_EMAIL --key-file /tmp/$CI_PIPELINE_ID.json --project $GCP_PROJECT_ID

我有这个.gitlab-ci.yml 文件。我已经成功创建了 docker 镜像并将其发布到 docker hub private repository 。我还创建了 GCP 计算 enigne 实例,正如您在 gitlab-ci 文件中看到的那样,我可以使用 gcloud 命令登录到该实例,现在我想找到一些 gcloud 命令,这将提供部署的机会此私有 docker hub 映像到此计算引擎实例。我该怎么做 ?如果您需要更多信息,请告诉我!

【问题讨论】:

    标签: docker google-cloud-platform gitlab-ci


    【解决方案1】:

    如果您没有绑定到 docker hub 而是可以使用 Google Container Registry,则可以使用 simple gcloud command 来部署实例,该实例使用专为容器设计的 very slimmed down operating system

     gcloud compute instances create-with-container [INSTANCE_NAME] \
         --container-image [DOCKER_IMAGE]
    

    但是,它不支持除 GCR 之外的私有 docker hub 注册表。 Here is a guide 推送到 GCR,如果这是您可以采取的路线。

    否则,实际上并没有 gcloud 命令来执行您想要的操作,除了可能配置一个 startup scriptcloud-init 文件,该文件具有验证和从私有存储库提取所需的数据,但它肯定不是自动化的。

    【讨论】:

      【解决方案2】:

      Compute Engine 虚拟机实例本身不运行容器映像。

      1) 安装 Docker 并手动部署镜像。

      2) 使用 Container OS 部署 Compute Engine 并手动部署您的映像。

      3) 切换到 Google Container Registry 并使用运行 Container OS 的 GCE VM 实例部署映像。

      【讨论】:

      • 手动部署对我来说不是这样,因为我想通过使用 .gitlab-ci.yml 文件自动进行部署,感谢您的建议,我会尝试找出第三种情况你已经描述了。
      • 您将无法通过 Google Cloud 工具使用清单,但您可以在本地桌面或虚拟机上使用。你可以使用 Docker 构建你的镜像,推送到 Container Registry,但 Google 不直接支持你的清单。您需要调整方法以适应 Google Cloud 工具(Container Registry、Cloud Build、Container OS)。
      【解决方案3】:

      gcloud 创建实例确保 docker 可用(如果未安装) 手动将容器流部署到 ​​gcloud
      或 gcloud 实例连接 dockerhub 注册表并拉取您的 .yml 文件部署它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多