【发布时间】:2021-06-29 20:03:54
【问题描述】:
我尝试使用 docker 启动 nodejs 应用程序,它给出了此错误消息,但容器已启动并在端口 3000 上运行,谁能帮助我?
我使用的 Docker-compose 脚本在这里:
version: '3'
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
ports:
- "8080:8080"
volumes:
- "/var/jenkins_home:/var/jenkins_home"
mongo:
container_name: mongo
image: mongo
volumes:
- ./conduit:/data/db/
ports:
- "27017:27017"
然后我停止容器创建 dockerfile,因为我意识到 jenkins 无法执行构建作业,这是我编写的 dockerfile
这是我的 Dockerfile:
# Base image
FROM node
MAINTAINER Louis Benagha
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
## Install app dependencies
RUN npm install
EXPOSE 3000
## run the application
CMD "start", "node ./app.js"
FROM jenkins/jenkins
USER root
RUN mkdir -p /tmp/download && \
curl -L https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz | tar -xz -C /tmp/download && \
rm -rf /tmp/download/docker/dockerd && \
mv /tmp/download/docker/docker* /usr/local/bin/ && \
rm -rf /tmp/download && \
groupadd -g 999 docker && \
usermod -aG staff,docker jenkins
USER jenkins
然后我像这样映射两个卷:
sudo docker build -t jenkins-docker .
sudo docker run -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -d jenkins-docker
这是错误:App crashing......
这是 package.json 文件:
{
"name": "conduit-node",
"version": "1.0.0",
"description": "conduit on node",
"main": "app.js",
"scripts": {
"mongo:start": "docker run --name realworld-mongo -p 27017:27017 mongo & sleep 5",
"start": "node ./app.js",
"dev": "nodemon ./app.js",
"test": "newman run ./tests/api-tests.postman.json -e ./tests/env-api-tests.postman.json",
"stop": "lsof -ti :3000 | xargs kill",
"mongo:stop": "docker stop realworld-mongo && docker rm realworld-mongo"
},
"repository": {
"type": "git",
"url": "git+https://github.com/gothinkster/productionready-node-api.git"
},
"license": "ISC",
"dependencies": {
"body-parser": "1.15.0",
"cors": "2.7.1",
"ejs": "2.4.1",
"errorhandler": "1.4.3",
"express": "4.13.4",
"express-jwt": "3.3.0",
"express-session": "1.13.0",
"jsonwebtoken": "7.1.9",
"method-override": "2.3.5",
"methods": "1.1.2",
"mongoose": "4.4.10",
"mongoose-unique-validator": "1.0.2",
"morgan": "1.7.0",
"passport": "0.3.2",
"passport-local": "1.0.0",
"request": "2.69.0",
"slug": "0.9.1",
"underscore": "1.8.3"
},
"devDependencies": {
"newman": "^3.8.2",
"nodemon": "^1.11.0"
}
}
我在这里也有我的 GitHub 存储库:https://github.com/ArerepadeBenagha/Mojotech_test.git
【问题讨论】:
-
它说无法连接到
localhost:27017。您的 mongo DB 服务器在单独的容器上运行。试试这个 URI,mongodb://mongo而不是localhost:27017 -
你是如何启动 Node 应用程序的? Jenkins 设置对这个问题很重要,还是可以删除?您能否包括打印出
App crashing.....的代码以及它遇到的任何其他错误消息或异常? -
@DavidMaze 我有 jenkins 容器的原因是因为我使用 jenkins 来执行 CICD 工作
-
@Dilshan 你的意思是将我的 docker-compose.yaml 文件中的 27017:27017 替换为 mongodb://mongo 吗?因为我记得只有数字在端口上有效,你能给我看一个示例代码吗?
-
@louisbenagha 没有。从节点 js 应用程序连接到 mongo db 数据库的地方。