Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个docker容器访问docker容器_Docker_Docker Compose_Devops_Apollo_Apollo Server - Fatal编程技术网

从另一个docker容器访问docker容器

从另一个docker容器访问docker容器,docker,docker-compose,devops,apollo,apollo-server,Docker,Docker Compose,Devops,Apollo,Apollo Server,正如您在docker-composer.yml文件中看到的那样,我在单独的容器中提供了以下服务。我无法将一个服务链接到另一个服务。我正在尝试访问网络网桥上GMSAPI网关中的服务,该服务构建在端口7100上的节点上。但是连接被拒绝了 docker-compose.yml version: '3' services: gms-api-gateway: restart: always links: - gms-customers networks:

正如您在docker-composer.yml文件中看到的那样,我在单独的容器中提供了以下服务。我无法将一个服务链接到另一个服务。我正在尝试访问网络网桥上GMSAPI网关中的服务,该服务构建在端口7100上的节点上。但是连接被拒绝了

docker-compose.yml


version: '3'

services:
  gms-api-gateway:
    restart: always
    links:
      - gms-customers
    networks:
      - backend
    build:
      dockerfile: Dockerfile.dev
      context: ./gms-api-gateway
    depends_on:
      - gms-customers
    ports:
      - 7000:7000
    volumes:
      - './gms-api-gateway:/opt/app'
    environment:
      # - NODE_ENV=localhost
      - NODE_PORT=7000
      - NODE_HOST=http://localhost
      - GMS_CUSTOMERS_NODE_HOST=http://gms-customers:7100
  gms-customers:
    restart: always
    networks:
      - backend
    build:
      dockerfile: Dockerfile.dev
      context: ./gms-customers
    depends_on:
      - customers-db
    ports:
      - 7100:7100
    volumes:
      - './gms-customers:/opt/app'
    environment:
      - NODE_ENV=localhost
      - NODE_PORT=7100
      - CUSTOMER_DB_URI=postgres://postgres:password@customers-db/customersdb

  customers-db:
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=postgres
      - POSTGRES_DB=customersdb
    image: 'postgres:12'
    ports:
      - '0.0.0.0:5433:5432'

networks:
  backend:
    driver: 'bridge'

gms api网关

import 'reflect-metadata';
import {ApolloServer} from 'apollo-server';
import {ApolloGateway} from '@apollo/gateway';

const port = process.env.NODE_PORT || 7000;
const gateway = new ApolloGateway({
  serviceList: [
    {
      name: 'customers',
      url: `${process.env.GMS_CUSTOMERS_NODE_HOST}/graphql`
    }
  ],

  // Experimental: Enabling this enables the query plan view in Playground.
  __exposeQueryPlanExperimental: false
});

(async () => {
  const {schema, executor} = await gateway.load();
  const server = new ApolloServer({
    schema,
    executor
  });

  server.listen(port, (): void =>
    console.log(
      `API Gateway is now running on ${process.env.NODE_HOST}:${port}/graphql`
    )
  );
})();

现在,服务gms api网关正试图从另一个名为gms customers的服务访问graphql模式。但是在日志中我收到了这个

Encountered error when loading customers at http://gms-customers:7100/graphql: request to http://gms-customers:7100/graphql failed, reason: connect ECONNREFUSED 172.18.0.2:7100

两个服务都在同一个网络上。在gms api网关内部
ping gms客户
works!有人面临同样的问题?

有时这可能是一个时间问题,在您提出请求之前,您的端口是否已打开?也许你需要设置一个延迟/服务员,然后再联系服务。我应该在哪里设置延迟?我正在等待加载架构。@BlackNetworkBitCheckout查看如何设置这样的顺序。您可能必须将网关应用程序设置为从其自身容器外部侦听内容。是否将侦听调用更改为
server.listen(端口,'0.0.0',()=>…)
help?最后,我找到了请求不起作用的原因。我正在运行命令
tsc-p.&nodemon dist/index.js
我刚刚把它改成了
dist/index.js
并且它可以工作!!谢谢大家的帮助