如何将 Node.js 应用连接到来自 docker 服务的 http rest API?
How to connect a Node.js app to an http rest API from a docker service?
Node.js 中的一个网络应用程序连接到一个 api 的 axios。
import axios from 'axios'
export function fetchList() {
return axios.get('https://api.website.dev/v1/posts')
}
api运行良好,一切正常。
现在,我使用 docker-compose
到 运行 容器内完全相同的 nodejs 网络应用程序。
docker-compose.yml:
版本:“3.1”
服务:
nodejs:
image: node:alpine
working_dir: /home/app
restart: always
ports:
- "8000:8080"
volumes:
- ../nodejs:/home/app
command: ["npm", "start"]
对Rest的axios调用APIreturns报错:
error { Error: getaddrinfo EAI_AGAIN api.domain.dev:443
at Object.exports._errnoException (util.js:1024:11)
at errnoException (dns.js:55:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
code: 'EAI_AGAIN',
errno: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'api.domain.dev',
host: 'api.domain.dev',
port: 443,
config:
{ adapter
…
如何让 nodejs 应用程序从 docker 容器连接到 api?
docker 集群内的 Dns 服务器不知道主机的任何信息 api.website.dev
您可以明确设置此主机的IP地址。尝试将 extra_hosts
添加到 docker-compose.yml
中的服务定义
nodejs:
image: node:alpine
working_dir: /home/app
restart: always
ports:
- "8000:8080"
volumes:
- ../nodejs:/home/app
command: ["npm", "start"]
extra_hosts:
- "api.website.dev:<IP_ADDRESS>
或者,如果您有了解 website.dev
的外部 DNS 服务器,您可以按照 here
所述将其添加到 docker 集群
Node.js 中的一个网络应用程序连接到一个 api 的 axios。
import axios from 'axios'
export function fetchList() {
return axios.get('https://api.website.dev/v1/posts')
}
api运行良好,一切正常。
现在,我使用 docker-compose
到 运行 容器内完全相同的 nodejs 网络应用程序。
docker-compose.yml:
版本:“3.1”
服务:
nodejs:
image: node:alpine
working_dir: /home/app
restart: always
ports:
- "8000:8080"
volumes:
- ../nodejs:/home/app
command: ["npm", "start"]
对Rest的axios调用APIreturns报错:
error { Error: getaddrinfo EAI_AGAIN api.domain.dev:443
at Object.exports._errnoException (util.js:1024:11)
at errnoException (dns.js:55:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
code: 'EAI_AGAIN',
errno: 'EAI_AGAIN',
syscall: 'getaddrinfo',
hostname: 'api.domain.dev',
host: 'api.domain.dev',
port: 443,
config:
{ adapter
…
如何让 nodejs 应用程序从 docker 容器连接到 api?
docker 集群内的 Dns 服务器不知道主机的任何信息 api.website.dev
您可以明确设置此主机的IP地址。尝试将 extra_hosts
添加到 docker-compose.yml
nodejs:
image: node:alpine
working_dir: /home/app
restart: always
ports:
- "8000:8080"
volumes:
- ../nodejs:/home/app
command: ["npm", "start"]
extra_hosts:
- "api.website.dev:<IP_ADDRESS>
或者,如果您有了解 website.dev
的外部 DNS 服务器,您可以按照 here