Docker-Compose:无法连接到Mongo [英] Docker-Compose: Can't Connect to Mongo

查看:533
本文介绍了Docker-Compose:无法连接到Mongo的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Docker来容器化使用Flask Web服务器和MongoDB数据库的Web应用程序.

I'm trying to use Docker to containerize a web application that uses a Flask web server and a MongoDB database.

在Flask服务器中,我尝试使用名为MONGO_URI的环境变量连接到Mongo:

Within the Flask server, I attempt to connect to Mongo using an environment variable named MONGO_URI:

db = MongoClient(os.environ['MONGO_URI'], connect=False)['cat_database']

在容器中,我尝试通过设置引用服务名称的MONGO_URI环境变量来连接到Mongo.完整的docker-compose.yml:

Within the container, I attempt to connect to Mongo by setting a MONGO_URI environment variable that references a service name. Full docker-compose.yml:

完整的docker-compose.yml:

Full docker-compose.yml:

version: '2'

services:
  mongo_service:
    image: mongo

  web:
    # link the web container to the mongo_service container
    links:
      - mongo_service
    # explicitly declare service dependencies
    depends_on:
      - mongo_service
    # set environment variables
    environment:
      PYTHONUNBUFFERED: 'true'
    volumes:
      - docker-data/app/
    # use the image from the Dockerfile in the cwd
    build: .
    command:
      - echo "success!"
    ports:
      - '8000:8000'

完整的Dockerfile:

Full Dockerfile:

# Specify base image
FROM andreptb/oracle-java:8-alpine

# Specify author / maintainer
MAINTAINER Douglas Duhaime <douglas.duhaime@gmail.com>

# Add the cwd to the container's app directory
ADD . "/app"

# Use /app as the container's working directory
WORKDIR "/app"

# Test that the mongo_service host is defined

RUN apk add --update --no-cache curl

RUN curl "mongo_service:27017"

这将返回:

无法解析主机:mongo_service

Could not resolve host: mongo_service

有人知道我做错了什么,或者我可以做些什么来使服务器连接到Mongo?我将非常感谢其他人可以提供的任何建议!

Does anyone know what I'm doing wrong, or what I can do to get the server to connect to Mongo? I'd be very grateful for any advice others can offer!

Docker版本:Docker version 17.12.0-ce, build c97c6d6
Docker撰写版本:docker-compose version 1.18.0, build 8dd22a9

Docker version: Docker version 17.12.0-ce, build c97c6d6
Docker-compose version: docker-compose version 1.18.0, build 8dd22a9

推荐答案

depends_on部分仅用于 A 链接网络部分还需要允许容器与每个订单进行对话.

A links or networks section is also required to allow the containers to talk to each order.

更新docker-compose.yml文件的web部分,以将链接添加到mongo_service容器:

Update the web section of the docker-compose.yml file to add the link to the mongo_service container:

...
  web:
    depends_on:
      - mongo_service
    links:
      - mongo_service
    environment:
      PYTHONUNBUFFERED: 'true'
...

更新

最后的 RUN 指令将在以下位置执行建立时间.您需要使用 CMD 来执行在运行时:

Update

The final RUN instruction will execute at build time. You need to use CMD instead for it to execute at runtime:

CMD curl "mongo_service:27017"

这篇关于Docker-Compose:无法连接到Mongo的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆