如何将一个Node.js应用程序连接到一个docker服务的http rest API?
Node.js中的web应用程序通过axios连接到api。
import axios from 'axios' export function fetchList() { return axios.get('https://api.website.dev/v1/posts') }
api运行良好,一切正常。
现在,我使用docker docker-compose
在容器中运行完全相同的nodejs Web应用程序。
泊坞窗,compose.yml:
版本:“3.1”
服务:
nodejs: image: node:alpine working_dir: /home/app restart: always ports: - "8000:8080" volumes: - ../nodejs:/home/app command: ["npm", "start"]
axios调用Rest API返回一个错误:
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>
或者,如果您有外部DNS服务器知道关于website.dev
一些东西,您可以将其添加到docker群集中,如此处所述