作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在从事 golang 项目,最近我阅读了有关 docker 的信息,并尝试在我的应用程序中使用 docker。我正在使用 mongoDB 作为数据库。现在的问题是,我正在创建 Dockerfile 来安装所有包并编译和运行 go 项目。我在本地运行 mongo 数据,如果我在没有 docker 的情况下运行 go 程序,它会给我输出,但是如果我在同一个项目中使用 docker(只是安装依赖项并运行这个项目),它编译成功但没有给出任何输出,有错误::
CreateSession: no reachable servers
我的 Dockerfile::
# Start from a Debian image with the latest version of Go installed
# and a workspace (GOPATH) configured at /go.
FROM golang
WORKDIR $GOPATH/src/myapp
# Copy the local package files to the container's workspace.
ADD . /go/src/myapp
#Install dependencies
RUN go get ./...
# Build the installation command inside the container.
RUN go install myapp
# Run the outyet command by default when the container starts.
ENTRYPOINT /go/bin/myapp
# Document that the service listens on port 8080.
EXPOSE 8080
EXPOSE 27017
最佳答案
当您在 Docker 中运行应用程序时,它是在虚拟环境中运行;它就像另一台计算机,但一切都是虚拟的,包括网络。
为了将你的容器连接到主机,Docker 给它一个特殊的 ip 地址,并给这个 ip 一个值为 host.docker.internal
的 url。
因此,假设 mongo 在主机上的每个接口(interface)上都绑定(bind)运行,从容器可以使用连接字符串到达它:
mongodb://host.docker.internal:21017/database
简化,只需使用 host.docker.internal 作为您的 mongodb 主机名。
关于mongodb - 如何将本地Mongo数据库连接到docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52314900/
我是一名优秀的程序员,十分优秀!