angular - Docker 撰写问题(ECONNREFUSED)
问题描述
我有两个 docker-compose 用于后端(.net Core)和 Angular 前端。这些应该相互通信。为此,我尝试了一个网络。但我总是收到以下消息:
[HPM] 尝试将请求 /appinfo 从 localhost:4200 代理到http://localhost:5000时发生错误(ECONNREFUSED)
两个容器都在运行。后端撰写是通过 Visual Studio 启动的。frontend-compose 是使用 powershell 启动的。
我在前端尝试了 80 和 5000 端口。结果是一样的。
对于网络,我在没有外部的情况下尝试过。对于外部,我使用“docker network create test_network”手动创建了网络。
后端码头工人撰写:
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
前端码头工人撰写:
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
包.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;
解决方案
每个容器现在都可以查找主机名 web 或 db 并取回相应容器的 IP 地址。例如,web 的应用程序代码可以连接到 URL postgres://db:5432 并开始使用 Postgres 数据库。
您应该使用容器名称作为主机名。
推荐阅读
- arrays - indexOf() 在数组中找不到值
- c# - 在 C# 中从 AppInsights 读取 JSON 输出
- haskell - 如何使用 QuickCheck 在 Haskell 中进行迭代测试?
- python - 如何删除 Django ModelForm 上的字段?
- ruby - Ruby RSpec 只为一个上下文定义 before/after 钩子
- sphinx - 用于浮点值的 Sphinx MVA
- c# - WPF 模拟按键按下事件未按预期工作
- java - 无法编译项目:lombok 创建的 Getter 不起作用
- android - Android新添加的代码控件由原来的XML控件改变
- parse-platform - 解析服务器查询对象不返回任何结果