Docker撰写问题(ECONNREFUSED)

时间:2020-01-03 08:37:08

标签: angular docker .net-core docker-compose

我有两个docker-compose用于后端(.net Core)和Angular前端。这些应该相互通信。为此,我尝试了一个网络。但我总是收到以下消息:

[HPM]尝试将请求/ appinfo从localhost:4200代理到http://localhost:5000(ECONNREFUSED)

时出错

两个容器都在运行。后端撰写是通过Visual Studio启动的。使用powershell开始进行前端组合。

我在前端尝试了端口80和5000。结果是一样的。

对于网络,我没有外部就尝试过。对于外部设备,我使用“ docker network create test_network”手动创建了网络。

后端docker-compose:

version: '3.7'

services:
  backend_sql:
    image: mcr.microsoft.com/mssql/server:2017-GA-ubuntu
    container_name: testsql
    networks:
      - test_network
    ports:
      - "1440:1433"
    volumes:
     - testsqldata:/var/opt/mssql

  backend_api:
    image: ${DOCKER_REGISTRY-}backendapi
    container_name: testapi
    build:
      context: .
      dockerfile: backendAPI/Dockerfile
    networks:
      - test_network
    depends_on:
     - backend_sql
    ports:
     - "5000:80"

networks:
  test_network:
    external:
        name: test_network

volumes:
  testsqldata:
    driver: local
    name: testsqldata

前端docker-compose:

version: "3.7"
services:
  testapp:
    container_name: testapp
    build: .
    networks:
      - test_network
    ports:
      - "4200:4200"
      - "49153:49153"
    volumes:
      - "/app/node_modules"
      - ".:/app"

networks:
  test_network:
    external:
      name: test_network

前端dockerfile:

FROM node:10.16.3-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 4200 49153
CMD npm run start

package.json:

"scripts": {
    "ng": "ng",
    "start": "ng serve --host 0.0.0.0 --port 4200 --poll 500 --disableHostCheck",
    "serve": "ng serve --proxy-config src/proxy.server.config.js",  

proxy.server.config.js:

const PROXY_CONFIG = [
    {
        context: [
            '/api',
        ],
        target: 'http://localhost:5000',
        secure: false,
        logLevel: 'debug',
        ws: true,
        pathRewrite: {
            "^/api": ""
        }
    }
];

module.exports = PROXY_CONFIG;      

1 个答案:

答案 0 :(得分:0)

the Docker Compose networking documentation

每个容器现在都可以查找主机名Web或数据库,并取回相应容器的IP地址。例如,网络的应用程序代码可以连接到URL postgres:// db:5432并开始使用Postgres数据库。

您应该使用容器名称作为主机名。