我有2个微服务,我正在通过docker-compose进行docker化。一旦我的节点服务ping我的python服务,我就会拒绝连接。
我可以通过Postman独立ping这两个服务,一切看起来都很好。似乎容器到容器的联网是我遇到的问题。节点服务器通过以下方式ping请求Axios
:
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
FROM node:alpine
WORKDIR "/app"
COPY ./package.json ./
RUN npm install
RUN npm install -g nodemon
COPY . .
CMD ["npm", "run", "start"]
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"]
您只需要确保要互相交谈的容器在同一网络上即可。
将此代码添加到docker-compose文件的末尾
networks:
some-net:
driver: bridge
然后像添加您想要在该网络中使用的服务那样添加它
networks:
- some-net
您的代码将如下所示
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
networks:
- some-net
channel-scraper:
restart: always
image: quart-app
environment:
- QUART_APP=api
build:
context: ./app-channelscrape/server
dockerfile: Dockerfile
ports:
- "9000:9000"
env_file:
- .env
networks:
- some-net
networks:
some-net:
driver: bridge
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句