我有两个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;
答案 0 :(得分:0)
从the Docker Compose networking documentation,
每个容器现在都可以查找主机名Web或数据库,并取回相应容器的IP地址。例如,网络的应用程序代码可以连接到URL postgres:// db:5432并开始使用Postgres数据库。
您应该使用容器名称作为主机名。