首页 > 解决方案 > docker-compose 关于 cloudbuild / 网络问题

问题描述

拥有 docker-compose 文件:

version: '3'

services:
  postgres:
    image: postgres:12.1
    environment:
      - POSTGRES_PASSWORD:'xyz'
    ports:
      - '5432:5432'
    volumes:
      - postgres:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
  redis:
    image: 'redis:5-alpine'
    command: redis-server
    ports:
      - '6379:6379'
    volumes:
      - 'redis:/data'
  specs:
    image: gcr.io/project_id/container_name:latest
    depends_on:
      - 'postgres'
      - 'redis'
    build: .
    entrypoint:
      - /bin/bash
      - -c
      - |
        ...stuff that require database processing...
    environment:
      - RAILS_ENV=test
      - REDIS_URL=redis://redis:6379/0
      - DATABASE_URL=postgres://postgres:@postgres:5432/test_db
    links:
      - postgres
      - redis
volumes:
  redis:
  postgres:
networks:
  default:
    external:
      name: cloudbuild

和以下 cloudbuild 步骤(我们使用社区云构建器):

...
- name: 'gcr.io/app-dmx-sh/docker-compose'
    args:
      - 'run'
      - 'specs'
    id: 'specs'
...

我们不断遇到以下错误:

could not translate host name "postgres" to address: Name or service not known

我们还尝试network_mode: cloudbuild在 compose 文件中为每个容器添加 ,但没有成功。

应该怎么做才能让 compose 文件网络在这个 cloudbuild 环境中按预期工作?

标签: networkingdocker-composegoogle-cloud-build

解决方案


推荐阅读