将 docker 容器与 python-eve 应用程序连接到 docker 容器与 mongodb
connect docker container with python-eve app to docker container with mongodb
我在 python-eve 关注 this tutorial。我将 docker 容器用于 mongodb,将 python3 用于 eve.
如果我将 venv 用于 eve 应用程序,它工作正常,但我无法连接到 mongo 容器,如果我 运行 我的 eve 应用程序在另一个 docker 容器中。我总是在 eve 应用程序中收到以下错误:pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] 连接被拒绝。虽然,我仍然可以手动连接到 mongo 容器。
到目前为止我做了什么
我四处寻找并尝试了一些提议,但没有成功。
- 我将 mongod.conf 中的 bindip 更改为 0.0.0.0 .
- 我完全删除了 bindip 行。
- 我尝试将 mongodb 启动为
mongod -f /etc/mongod.conf
。
- 我试图完全删除所有容器并重新开始。
我的docker-compose.yml
version: '3.3'
volumes:
mongodata:
services:
mongodb:
container_name: 'mongodb'
image: mongo:3.4
volumes:
- mongodata:/data/db
env_file:
- environments/local.env
expose:
- 27017
api:
container_name: 'mymoney'
build:
context: ./src
dockerfile: Dockerfile
volumes:
- ./src:/app/src
ports:
- '5000:5000'
depends_on:
- mongodb
links:
- mongodb
我的 Dockerfile 用于 eve 应用程序:
FROM python:3.6
MAINTAINER alpy
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get install -qq -y build-essential libffi-dev python3-dev
RUN mkdir -p /app/src
# We copy the requirements.txt file first to avoid cache invalidations
COPY requirements.txt /app/src
WORKDIR /app/src
RUN pip install -r requirements.txt
COPY . /app/src
EXPOSE 5000
CMD ["python", "run.py"]
我不知道,我还能做什么。需要你的帮助。
看来,应用 settings.py
中的 MONGO_HOST
必须设置为指定的 mongo 容器名称在 docker-compose.yml
:
...
MONGO_HOST = 'mongodb'
...
我在 python-eve 关注 this tutorial。我将 docker 容器用于 mongodb,将 python3 用于 eve.
如果我将 venv 用于 eve 应用程序,它工作正常,但我无法连接到 mongo 容器,如果我 运行 我的 eve 应用程序在另一个 docker 容器中。我总是在 eve 应用程序中收到以下错误:pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] 连接被拒绝。虽然,我仍然可以手动连接到 mongo 容器。
到目前为止我做了什么
我四处寻找并尝试了一些提议,但没有成功。
- 我将 mongod.conf 中的 bindip 更改为 0.0.0.0 .
- 我完全删除了 bindip 行。
- 我尝试将 mongodb 启动为
mongod -f /etc/mongod.conf
。 - 我试图完全删除所有容器并重新开始。
我的docker-compose.yml
version: '3.3'
volumes:
mongodata:
services:
mongodb:
container_name: 'mongodb'
image: mongo:3.4
volumes:
- mongodata:/data/db
env_file:
- environments/local.env
expose:
- 27017
api:
container_name: 'mymoney'
build:
context: ./src
dockerfile: Dockerfile
volumes:
- ./src:/app/src
ports:
- '5000:5000'
depends_on:
- mongodb
links:
- mongodb
我的 Dockerfile 用于 eve 应用程序:
FROM python:3.6
MAINTAINER alpy
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get install -qq -y build-essential libffi-dev python3-dev
RUN mkdir -p /app/src
# We copy the requirements.txt file first to avoid cache invalidations
COPY requirements.txt /app/src
WORKDIR /app/src
RUN pip install -r requirements.txt
COPY . /app/src
EXPOSE 5000
CMD ["python", "run.py"]
我不知道,我还能做什么。需要你的帮助。
看来,应用 settings.py
中的 MONGO_HOST
必须设置为指定的 mongo 容器名称在 docker-compose.yml
:
...
MONGO_HOST = 'mongodb'
...