Communicate between two containers in Google cloud build

后端 未结 3 1219
醉话见心
醉话见心 2021-02-04 08:20

I am running my CI/CD pipeline in Google cloud build. My app has web and wget containers. I am trying to reach web from wget<

相关标签:
3条回答
  • 2021-02-04 08:33

    From the docs:

    Each build step is run with its container attached to a local Docker network named cloudbuild. This allows build steps to communicate with each other and share data.

    You can use docker compose and using cloudbuild network, for example:

    #docker-compose.yml
    app-workspace:
      ...
      network_mode: cloudbuild
    db-mysql:
      ...
      network_mode: cloudbuild
    ...
    networks:
      default:
        external:
          name: cloudbuild
    

    Or if you are using docker run, add option --network cloudbuild.

    After that, you can communicate to other services you defined in the previous step as you expect. For example:

    #steps
    - id: 'Ping to other container'
      name: gcr.io/cloud-builders/curl
      args: ["app-workspace:your-service-port"]
    

    Hope this helps.

    0 讨论(0)
  • 2021-02-04 08:34

    I had a similar issue setting up integration tests on cloud build. I was trying to run integration tests from another builder (go-builder) against my other containers (started through docker-compose community built containers).

    Without specifying any networks on docker-compose.yaml, all containers are started on the default network (https://docs.docker.com/compose/networking/). On cloud build, it creates a new network named cloudbuild_default and places all my containers there. By forcing all containers to join cloudbuild network through my docker-compose.yaml file, I was able to establish communications and run my tests against them.

    #docker-compose.yaml
    
    networks:
      default:
        external:
          name: cloudbuild
    

    This might be an alternate configuration for you. Hope it helps

    0 讨论(0)
  • 2021-02-04 08:45

    I did an experiment and it looks like (without doing any special setup) you can communicate between build step containers by using the name step_x (0-based numbering).

    For example if you have a web-server listening on the endpoint /hello (on port 8081) in the container for the first build step (step_0). You can make requests to that endpoint from another build step container by making a request to http://step_0:8081/hello.

    0 讨论(0)
提交回复
热议问题