docker-compose成功,但服务器在请求时未响应

时间:2018-07-10 06:31:41

标签: docker-compose no-response

我使用 Flask 框架, Redis 作为主数据库, MongoDB 作为备份存储以及 Celery 作为任务队列,可在后台将数据存储到MongoDB中

然后,我使用 docker-compose 对我的应用程序进行docker化。这是我的docker-compose.yml

version: '3'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app
  redis:
    image: "redis:alpine"
    ports:
      - "6379:6379"
  mongo:
    image: "mongo:3.6.5"
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_DATABASE: syncapp

这是我的Dockerfile

# base image
FROM python:3.5-alpine
MAINTAINER xhoix <145giakhang@gmail.com>

# copy just the requirements.txt first to leverage Docker cache
# install all dependencies for Python app
COPY ./requirements.txt /app/requirements.txt

WORKDIR /app

# install dependencies in requirements.txt
RUN pip install -r requirements.txt

# copy all content to work directory /app
COPY . /app

# specify the port number the container should expose
EXPOSE 5000

# run the application
CMD ["python", "/app/app.py"]

运行命令docker-compose up后,应用服务器,Redis和Mongo服务器运行良好。但是当我使用 Postman curl 调用API时,例如http://127.0.0.1:5000/sync/api/v1.0/users,该API应该返回所有用户的JSON格式,但结果是{{1 }}

我不知道为什么会这样。 感谢您的帮助和建议!

2 个答案:

答案 0 :(得分:0)

如果操作系统是Linux,则使用:

  

ifconfig -a

如果是Windows操作系统,请使用:

  

ipconfig / all

然后检查诸如docker之类的界面或具有虚拟化功能的东西,并使用ipv4或inet

或者只需使用docker命令:

  

docker网络检查桥

然后在IPAM上使用网关ip

答案 1 :(得分:0)

我找到了问题的原因:

经过一个小时的调试,事实证明,我只需要将应用程序主机更改为0.0.0.0。也许在映射端口时,docker默认值为0.0.0.0,因为当我运行命令docker-compose ps时,每个容器的PORTS列的格式均为0.0.0.0:<port> -> <port>。我不知道这是不是问题的原因,但是我做到了,问题得以解决