docker - 如何使用 docker-compose 将容器部署到谷歌云?

标签 docker google-cloud-platform docker-compose google-kubernetes-engine google-cloud-run

我对 GCP 很陌生,主要使用 AWS。我目前正在尝试使用 GCP 并希望使用 docker-compose 部署容器.

我设置了一个非常基本的 docker-compose.yml 文件,如下所示:

# docker-compose.yml
version: '3.3'

services:
  git:
    image: alpine/git
    volumes:
      - ${PWD}:/git
    command: "clone https://github.com/PHP-DI/demo.git"

  composer:
    image: composer
    volumes:
      - ${PWD}/demo:/app
    command: "composer install"
    depends_on:
      - git

  web:
    image: php:7.4-apache
    ports:
      - "8080:${PORT:-80}"
      - "8000:${PORT:-8000}"
    volumes:
      - ${PWD}/demo:/var/www/html
    command: php -S 0.0.0.0:8000 -t /var/www/html
    depends_on:
      - composer


因此容器将从 git 获取代码,然后使用 composer 安装依赖项,最后在端口 8000 上可用。

在我的机器上,运行 docker-compose up无所不能。但是如何将这个 docker-compose 推送到谷歌云。

我曾尝试使用 docker/compose 构建容器图像和 Dockerfile 如下:
FROM docker/compose

WORKDIR /opt
COPY docker-compose.yml .

WORKDIR /app
CMD docker-compose -f /opt/docker-compose.yml up web

然后将容器推送到注册表。从那里我尝试部署到:
  • 云运行 - 没有工作,因为我找不到为 /var/run/docker.sock 指定安装卷的方法
  • Kubernetes - 我安装了 docker.sock但我一直在日志中收到一个错误 /app来自 git 服务的信息是只读的
  • 计算引擎 - 与上述相同的错误

  • 我不想通过将所有本地文件复制到其中然后上传来制作容器,因为依赖项可能非常大,因此需要推送一个沉重的容器。

    我有一个可用的 docker-compose 并且只想在 GCP 上使用它。最简单的方法是什么?

    最佳答案

    这可以通过在项目根目录中创建 cloudbuild.yaml 文件来完成。
    将以下步骤添加到 cloudbuild.yaml:

      steps:
      # running docker-compose
      - name: 'docker/compose:1.26.2'
        args: ['up', '-d']
    
    在 Google Cloud Platform > Cloud Builder 上:将构建配置的文件类型配置为 Cloud Build 配置文件(yaml 或 json),输入文件位置:cloudbuild.yaml
    如果调用触发器的存储库事件设置为“推送到分支”,则 Cloud Build 将启动 docker-compose.yml 来构建您的容器。

    关于docker - 如何使用 docker-compose 将容器部署到谷歌云?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61157940/

    相关文章:

    google-cloud-platform - 临时容器内的用户 Google Cloud 凭据?

    dictionary - 如何从 yaml 配置中删除继承属性?

    reactjs - react : Module not found: Can't resolve 'react-html-parser'

    javascript - 如何确保 null 和空字符串字段不会添加到 firestore Reactjs 中的文档中

    mysql - 为什么 MySQL 容器在带有 WSL 2 的 Windows 10 Home 上不断重启?

    docker - 如何减少 `docker-compose` up 命令的输出

    docker - Azure VM Windows 10上的docker

    security - 有没有办法限制不受信任的容器调度程序?

    docker - 以Jenkins Slave的身份运行Docker容器

    google-cloud-platform - gcloud beta pubsub 订阅拉取格式