首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的nodejs应用程序没有启动,但是docker容器正在运行?

为什么我的nodejs应用程序没有启动,但是docker容器正在运行?
EN

Stack Overflow用户
提问于 2021-04-03 05:20:36
回答 1查看 703关注 0票数 0

我试着用docker启动一个nodejs应用程序,它给出了这个错误消息,但是容器已经启动,并在端口3000上运行,有人能帮我吗?

我使用的Docker编写脚本如下:

代码语言:javascript
复制
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

代码语言:javascript
复制
# 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"
代码语言:javascript
复制
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

然后,我把这两卷都映射成这样:

代码语言:javascript
复制
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

这是错误:应用程序崩溃.

下面是package.json文件:

代码语言:javascript
复制
{
  "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回购也在这里:test.git

EN

回答 1

Stack Overflow用户

发布于 2021-04-03 10:37:24

因为您有两个容器,每个容器都有自己的localhost,所以在您的NodeJS容器中,localhost表示nodejs container,在mongo容器中,localhost表示mongo container,所以它们是不同的。

为了解决问题,,您应该在应用程序中替换localhost:27017127.0.0.1:27017mongo:27017

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66927966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档