Dockerfile mongo:连接握手期间发生连接()错误:拨打 tcp 127.0.0.1:27017

Dockerfile mongo: connection() error occured during connection handshake: dial tcp 127.0.0.1:27017

我有 Dockerfile

FROM mongo
RUN mkdir -p /app/data
WORKDIR /app/data
COPY cars.csv /app/data
RUN mongod --fork --syslog
CMD ["mongoimport", "-d", "Gene", "-c", "Genes", "--type", "csv", "--file", "cars.csv", "--headerline"]
EXPOSE 27017:27017

我使用以下命令构建并启动 docker 文件

docker build -t "mtest:1" .

docker run mtest:1

运行 命令给我以下错误

2022-01-07T19:01:12.784+000 error connecting to host: could not connect to server: server selection error: 
server selection timeout, current topology: { Type: Single, Servers: [{ Addr: localhost:27017, 
Type: Unknown, Last error: connection() error occured during connection handshake: 
dial tcp 127.0.0.1:27017: connect: connection refused }, ] }

docker ps -a

的输出
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                          PORTS     NAMES
e623f431b9db   mtest:1   "docker-entrypoint.s…"   2 minutes ago    Exited (1) About a minute ago             cranky_satoshi

当我尝试使用 docker exec -it e623f431b9db bash 和 运行 mongod 在容器内部执行操作时,我得到以下结果

MongoDB shell version v5.0.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:372:17
@(connect):2:6
exception: connect failed
exiting with code 1

我是新手,我不确定自己做错了什么。

您已经用自己的 CMD 覆盖了 mongo 启动过程,因此 Mongo 服务器不再启动。因此,mongoimport 将失败,您的容器将退出。

相反,只是 运行 原始的 Mongo 图像本身带有卷安装,然后执行到它,以及 运行 您的导入功能。之后,它仍然是 运行ning,您可以连接到它。

顺便说一下,EXPOSE 27107:27107 不是一个有效的表达式。