douchun1859 2019-08-20 20:26
浏览 117

当我运行docker compose时,我的golang(入口)容器失败,提示“建立Mongo会话时出错”

I ran a docker-compose up and I get an error on my golang container saying "Error establishing Mongo session" and then the container exits out. I'm not sure if the issue begins with my golang container or mongo.

I've tried a multitude of things at this point. Here is my docker logs file for my golang container.

docker logs for golang

To run in debug mode, run with '-d true' option

time="2019-08-20T20:12:12Z" level=info msg="Logging in INFO mode"
time="2019-08-20T20:12:12Z" level=info msg="Go version go1.7.3"
time="2019-08-20T20:12:12Z" level=info msg="Starting ingest service on port 4001"
time="2019-08-20T20:12:12Z" level=info msg="Koala Version Number: v19.33.0"
time="2019-08-20T20:12:23Z" level=error msg="Error establishing Mongo session"
panic: no reachable servers

goroutine 1 [running]:
panic(0x933c00, 0xc4201b4f70)
        /usr/local/go/src/runtime/panic.go:500 +0x1a1
ingest/mongo.InitDB(0x0, 0x0)
        /home/jsikala/Documents/koala/go/src/ingest/mongo/mongo.go:34 +0x27e
main.setup()
        /home/jsikala/Documents/koala/go/ingest.go:118 +0x3ce
main.main()
        /home/jsikala/Documents/koala/go/ingest.go:56 +0x292

This is the error I get when I run my docker compose up.

This is my docker-compose.yml file.

version: "3"
volumes:
    data:
        external:
            name: ${MONGO_VOLUME_NAME}
services:
    rails:
        image: rails2
        container_name: koala_rails_${USER}
        environment: 
            - KOALA_ENV
            - RAILS_PORT
            - KOALA_INGEST_URL=${INGEST_PROTOCOL}://ingest:${INGEST_PORT}
            - KOALA_MONGO_URL=mongo_service:27017
            - KOALA_REDIS_URL=redis_service:6379
            - KOALA_PKI_IN_DEV
            - KOALA_USER_ID_HEADER
            - USER
            - USERNAME
            - KOALA_REGISTER_USER_URL
            - KOALA_SECURITY_VALIDATOR_URL
            - CERT_FILE_PEM=/usr/src/app/certs/public.pem
            - PRIVATE_CERT_FILE_PEM=/usr/src/app/certs/private-key.pem
            - SSL_CA_FILE=/usr/src/app/certs/ca.pem
            - LOGNAME
            - KOALA_SECRET_KEY_BASE
            - KOALA_MONGO_USERNAME
            - KOALA_MONGO_PASSWORD
            - KOALA_HELP_URL
            - KOALA_CONTACT_EMAIL
            - KOALA_USE_CERTS
            - BUNDLE_GEMFILE
            - KOALA_SERVER_URL
            - RAILS_SERVE_STATIC_FILES
            - RAILS_LOG_TO_STDOUT
        ports:
            - "${RAILS_PORT}:${RAILS_PORT}"
        volumes:
            - ${CERT_FILE_PEM}:/usr/src/app/certs/public.pem
            - ${PRIVATE_CERT_FILE_PEM}:/usr/src/app/certs/private-key.pem
            - ${SSL_CA_FILE}:/usr/src/app/certs/ca.pem
    mongo_service:
        image: mongo:3.2.0
        volumes:
            - data:/data/db
        ports:
            - "27017:27017"
    redis_service:
        image: redis:4.0.8
        ports:
            - "6379:6379"
    ingest:
        image: ingest
        container_name: koala_ingest_${USER}
        extra_hosts:
            - csie.as.northgrum.com:10.8.131.12
        environment: 
            - KOALA_ENV
            - KOALA_CONFIG_FILE=/go/config.yml
            - INGEST_PORT
            - LOGNAME
            - KOALA_MONGO_URL
            - KOALA_JIRA_URL
            - KOALA_JIRA_SESSION_URL
            - CERT_FILE_PEM=/go/certs/public.pem
            - PRIVATE_CERT_FILE_PEM=/go/certs/private-key.pem
            - SSL_CA_FILE=/go/certs/ca.pem
            - KOALA_REDIS_URL=redis_service:6379
            - KOALA_USE_CERTS
            - KOALA_MONGO_USERNAME
            - KOALA_MONGO_PASSWORD
            - JIRA_USERNAME
            - JIRA_PASSWORD
        ports:
            - "${INGEST_PORT}:${INGEST_PORT}"
        volumes:
            - ${CERT_FILE_PEM}:/go/certs/public.pem
            - ${PRIVATE_CERT_FILE_PEM}:/go/certs/private-key.pem
            - ${SSL_CA_FILE}:/go/certs/ca.pem
        links:
            - mongo_service
        depends_on:
            - mongo_service
            - redis_service

NOTE: ingest is the golang service

This is my docker Dockerfile for golang

FROM golang:1.11.5

COPY . .

WORKDIR /go
COPY config.yml /go
RUN mkdir -p $WORKDIR/logs
RUN mkdir -p $WORKDIR/certs

RUN cd $WORKDIR

ENV PATH $PATH:$WORKDIR

CMD ["./runIngest"]

If this ran as intended, golang would be ingesting data in mongo. Any idea what caused this issue?

  • 写回答

1条回答 默认 最新

  • drnf09037160 2019-08-21 01:57
    关注

    In order to connect from Golang container to Mongo container, the Mongo Host must be set to mongo_service_name:mongo_port. And make sure the Golang container can reach to the Mongo container (by using network or links directives).

    Please check your KOALA_MONGO_URL in the ingest service.

    I don't know exactly what is your Mongo client in your ingest service. But normally, KOALA_MONGO_URL may be mongo_service:27017 or mongodb://mongo_service:27017/database_name.

    评论

报告相同问题?

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真