当前位置: > > > > MongoDB 构建 Docker 映像时无法运行测试 – 服务器选择错误:服务器选择超时
来源:stackoverflow
2024-04-26 17:03:33
0浏览
收藏
学习知识要善于思考,思考,再思考!今天小编就给大家带来《MongoDB 构建 Docker 映像时无法运行测试 – 服务器选择错误:服务器选择超时》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!
问题内容
我正在使用以下配置的容器中运行 mongo 映像:
version: '3' services: mongodb: image: mongo ports: - '27017:27017' environment: - mongo_initdb_root_username=user - mongo_initdb_root_password=password - mongo_initdb_database=microservices volumes: - ./docker-entrypoint-initdb.d/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
我已经开始使用 golang 构建微服务,并且我也想开始对它们进行 docker 化以加快开发过程。但是,当我尝试在下面运行此 dockerfile 时,它会在运行测试命令时出现恐慌,并显示错误:
database url: mongodb://user:[email protected]:27017/microservices server selection error: server selection timeout, current topology: { type: unknown, servers: [{ addr: 127.0.0.1:27017, type: unknown, last error: connection() error occurred during connection handshake: dial tcp 127.0.0.1:27017: connect: connection refused }, ] } panic: server selection error: server selection timeout, current topology: { type: unknown, servers: [{ addr: 127.0.0.1:27017, type: unknown, last error: connection() error occurred during connection handshake: dial tcp 127.0.0.1:27017: connect: connection refused }, ] }
数据库连接有效,因为当我尝试从 go 文件运行测试时,它们通过了。只有当我在构建容器时尝试从容器中运行它们时,似乎才会出现任何问题。
FROM golang:1.18 as build WORKDIR /go/src/app COPY . . RUN go mod download RUN go vet -v /go/src/app/... RUN go test -v /go/src/app/... RUN CGO_ENABLED=0 go build -o /go/bin/app/authsvc /go/src/app/authentication/main.go FROM gcr.io/distroless/static-debian11 COPY --from=build /go/bin/app/authsvc / COPY --from=build /go/src/app/authentication/.env / CMD ["/authsvc"]
正确答案
更改数据库网址
尝试mongodb
database url: mongodb://user:password@mongodb:27017/microservices
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《MongoDB 构建 Docker 映像时无法运行测试 – 服务器选择错误:服务器选择超时》文章吧,也可关注公众号了解相关技术文章。