如何像本地一样访问mongodb

时间:2018-11-09 01:29:25

标签: docker docker-compose

我使用docker构建系统以在本地进行测试。

还可以使用docker-compose将所有图像绑定到一个基础结构。

下面是我使用的图像。

  • nginx:latest
  • mongo:latest
  • ubuntu:latest
  • python:3.6.5

(烧瓶Web应用程序的python)

[docker-compose.yml]

version: '3.7'

services:
  nginx:
    build: 
      context: .
      dockerfile: docker/nginx/dockerfile
    container_name: nginx
    hostname: nginx-dev
    ports:
      - '80:80'
    networks: 
      - backend

  mongodb:
    build:
      context: .
      dockerfile: docker/mongodb/dockerfile
    container_name: mongodb
    hostname: mongodb-dev
    ports:
      - '27017:27017'
    networks:
      - backend

  web_project:
    build:
      context: .
      dockerfile: docker/web/dockerfile
    container_name: web_project
    hostname: web_project_dev
    ports:
      - '5000:5000'
    networks:
      - backend
    tty: true
    depends_on:
      - mongodb
    links:
      - mongodb

  redis:
    image: redis:latest
    container_name: redis
    hostname: redis_dev

networks: 
  backend:
    driver: 'bridge'

[mongo的dockerfile]

FROM mongo:latest

EXPOSE 27017

[python的dockerfile]

FROM python:3.6.5

COPY . ./home
WORKDIR home
RUN pip install -r app/requirements.txt
CMD python manage.py run

当我在本地运行python flask Web应用程序时,它工作正常,因为mongodb也位于本地。

但是我使用docker-compose up运行,它无法访问mongodb。

也许每个docker映像都是分开的。

我认为我必须缩小每个图像才能访问其他图像。

但是我是docker的新手,所以请与它混淆。

这里有什么解决办法吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

请确保您在Flask应用中使用主机名${libs.而不是mongodb-dev引用Mongo

答案 1 :(得分:0)

[已解决]

我将'host': 'mongodb-dev:27017'修改为'host': 'mongodb-:27017'

它运行完美。

我认为它是通过链接发生的:mongodb。