【发布时间】:2021-01-17 06:37:09
【问题描述】:
我有 2 个微服务正在通过 docker-compose 进行 docker 化。一旦我的节点服务 ping 我的 python 服务,我的连接就会被拒绝。
我可以通过 Postman 独立 ping 两个服务,一切看起来都很好。似乎容器到容器网络是我遇到的问题。节点服务器正在通过Axios ping 一个请求,如下所示:
const res = await axios.get('bot:9000/test')
Python 端的服务器代码如下所示:
@app.route('/test', methods=['GET'])
async def tester():
return jsonify(data='hi'), 200
编写文件
version: '3'
services:
bot:
build:
dockerfile: Dockerfile.dev
context: ./app-bot
volumes:
- /app/node_modules
- ./app-bot:/app
environment:
- TELEGRAM_API_KEY=xxxx
- BOT_PORT=4040
channel-scraper:
restart: always
image: quart-app
environment:
- QUART_APP=api
build:
context: ./app-channelscrape/server
dockerfile: Dockerfile
ports:
- "9000:9000"
env_file:
- .env
节点 Docker 文件
FROM node:alpine
WORKDIR "/app"
COPY ./package.json ./
RUN npm install
RUN npm install -g nodemon
COPY . .
CMD ["npm", "run", "start"]
Flask Docker 文件
FROM python:3.7-alpine
RUN adduser -D quart
WORKDIR /home/quart
COPY ./requirements.txt ./
RUN rm -rf /var/cache/apk/*
RUN pip install --no-cache-dir -r requirements.txt --upgrade && \
chown -R quart:quart ./
COPY ./ /home/quart/
USER quart
CMD ["quart", "run", "-h", "0.0.0.0", "-p", "9000"]
【问题讨论】:
-
看起来您正在向
bot作为主机名发出请求,但来自机器人服务本身;您的意思是拨打http://channel-scraper:9000以联系其他服务吗? -
@DavidMaze 是的,这确实是问题所在。 :) 昨晚注意到了这一点。谢谢
标签: python node.js docker flask