gpt4 book ai didi

docker - Docker容器无法运行

转载 作者:行者123 更新时间:2023-12-02 20:18:50 25 4
gpt4 key购买 nike

我的应用程序的Dockerfile如下

               # Tells the Docker which base image to start.
FROM node

# Adds files from the host file system into the Docker container.
ADD . /app

# Sets the current working directory for subsequent instructions
WORKDIR /app

RUN npm install
RUN npm install -g bower
RUN bower install --allow-root
RUN npm install -g nodemon

#expose a port to allow external access
EXPOSE 9000 9030 35729

# Start mean application
CMD ["nodemon", "server.js"]

docker-compose.yml文件如下
                          web:
build: .
links:
- db
ports:
- "9000:9000"
- "9030:9030"
- "35729:35729"
db:
image: mongo:latest
ports:
- "27017:27017"

运行时产生的错误如下:
   web_1  | [nodemon] 1.11.0
web_1 | [nodemon] to restart at any time, enter `rs`
web_1 | [nodemon] watching: *.*
web_1 | [nodemon] starting `node server.js`
web_1 | Server running at http://127.0.0.1:9000
web_1 | Server running at https://127.0.0.1:9030
web_1 |
web_1 | /app/node_modules/mongodb/lib/server.js:261
web_1 | process.nextTick(function() { throw err; })
web_1 | ^
web_1 | MongoError: failed to connect to server [localhost:27017] on first connect
web_1 | at Pool.<anonymous> (/app/node_modules/mongodb-core/lib/topologies/server.js:313:35)
web_1 | at emitOne (events.js:96:13)
web_1 | at Pool.emit (events.js:188:7)
web_1 | at Connection.<anonymous> (/app/node_modules/mongodb-core/lib/connection/pool.js:271:12)
web_1 | at Connection.g (events.js:291:16)
web_1 | at emitTwo (events.js:106:13)
web_1 | at Connection.emit (events.js:191:7)
web_1 | at Socket.<anonymous> (/app/node_modules/mongodb-core/lib/connection/connection.js:165:49)
web_1 | at Socket.g (events.js:291:16)
web_1 | at emitOne (events.js:96:13)
web_1 | at Socket.emit (events.js:188:7)
web_1 | at emitErrorNT (net.js:1281:8)
web_1 | at _combinedTickCallback (internal/process/next_tick.js:74:11)
web_1 | at process._tickCallback (internal/process/next_tick.js:98:9)
web_1 | [nodemon] app crashed - waiting for file changes before starting...

我在DockerHub上为我的应用程序将图像上传为crissi / airlineInsurance。

最佳答案

在docker中,您无法通过localhost连接到其他容器,因为每个容器都是独立的并且具有自己的IP。您应该使用container_name:port。在您的示例中,从“web”中的NodeJS应用程序连接到“db”中的MongoDB应该为db:27017

因此,这不是Dockerfile的问题。来自NodeJS应用程序的连接URL指向localhost而不是db。

关于docker - Docker容器无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40573915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com