Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js docker编写时,nodejs应用程序退出,代码为0_Node.js_Docker_Docker Compose - Fatal编程技术网

Node.js docker编写时,nodejs应用程序退出,代码为0

Node.js docker编写时,nodejs应用程序退出,代码为0,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我在运行docker compose up时遇到以下错误 nginx_1 | 2018/07/03 06:54:17 [emerg] 1#1: host not found in upstream "admin:1123" in /etc/nginx/nginx.conf:19 nginx_1 | nginx: [emerg] host not found in upstream "admin:1123" in /etc/nginx/nginx.conf:19 nginx

我在运行docker compose up时遇到以下错误

nginx_1       | 2018/07/03 06:54:17 [emerg] 1#1: host not found in upstream "admin:1123" in /etc/nginx/nginx.conf:19
nginx_1       | nginx: [emerg] host not found in upstream "admin:1123" in /etc/nginx/nginx.conf:19
nginx_1 exited with code 1
docker-compose.yml

version: "2"

volumes: 
  mongostorage:  

services:  
  app:
    build: ./app
    ports:
      - "3000"
    links:
      - mongo
      - redis

    volumes:
      - ./app:/var/www/app
      - /var/www/app/node_modules

  adminmongo:
    build: ./adminMongo
    ports:
      - "4455"
    links:
      - mongo    
    command: node app.js

  admin:
    build: ./admin
    ports:
      - "1123"
    links:
      - mongo
      - redis
    command: node admin_app.js

  nginx:
    build: ./nginx
    ports:
      - "80:80"
      - "1123:1123"
      - "4455:4455"
    links:
      - app:app
      - admin:admin

  mongo:
    image: mongo:2.4
    environment:
      - MONGO_DATA_DIR=/data/db
    volumes:
      - mongostorage:/data/db
    ports:
      - "27017:27017"

  redis:
    image: redis
    volumes:
      - ./data/redis/db:/data/db
    ports:
      - "6379:6379"    
应用程序的dockerfile

FROM node:9.8
RUN mkdir -p /var/www/app
WORKDIR /var/www/app
COPY . /var/www/app
RUN npm install -g gulp pm2 notify-send
RUN npm install 
CMD ["pm2-docker", "./bin/www"]
管理员的dockerfile

FROM node:9.8
RUN mkdir -p /var/www/sibkladmin
WORKDIR /var/www/sibkladmin
COPY . /var/www/sibkladmin
RUN npm install -g gulp pm2 bcrypt
RUN npm install 
nginx的dockerfile

FROM nginx:latest

EXPOSE 80
EXPOSE 1123
EXPOSE 4455

COPY nginx.conf /etc/nginx/nginx.conf
nginx.conf

events {
  worker_connections  1024;
}

http{

    upstream app.local{
        least_conn;
        server app:3000 weight=10 max_fails=3 fail_timeout=30s;
    }

    upstream app.local:4455{
        least_conn;
        server adminmongo:4455 weight=10 max_fails=3 fail_timeout=30s;
    }

    upstream app.local:1123{
        least_conn;
        server admin:1123 weight=10 max_fails=3 fail_timeout=30s;
    }



    server {
        listen 80;

        server_name app.local;

        location / {
            proxy_pass http://app.local;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

    server {
        listen 1123;

        server_name app.local:1123;

        location / {
            proxy_pass http://app.local:1123;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

    server {
        listen 4455;

        server_name app.local:4455;

        location / {
            proxy_pass http://sibklapp.local:4455;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }
}
更新:

docker编写生成后收到错误

npm ERR! path /var/www/admin/node_modules/bcrypt/node_modules/abbrev
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/var/www/admin/node_modules/bcrypt/node_modules/abbrev' -> '/var/www/admin/node_modules/bcrypt/node_modules/.abbrev.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-07-05T10_03_43_640Z-debug.log
ERROR: Service 'admin' failed to build: The command '/bin/sh -c npm install' returned a non-zero code: 254

该问题表明您没有使用
npm install
Dockerfile
中安装
node\u模块,或者您使用
COPY从主机过度编写了这些模块/src
语句类型

由于您使用的模块是本机模块,因此需要在docker映像内编译,而不仅仅是从其他地方复制,因为除非主机操作系统版本和映像操作系统版本相同,否则该模块将不兼容。您可以尝试:

NGINX dockerfile 更改:

复制nginx.conf/etc/nginx/nginx.conf

复制nginx.conf/etc/nginx/nginx.conf.d

删除
EXPOSE
端口无需公开端口

撰写文件 将撰写文件更新为:

版本:“2”
卷数:
蒙古族:
服务:
应用程序:
构建:./app
端口:
- "3000:3000"
链接:
-蒙戈
-雷迪斯
卷数:
-/应用程序:/var/www/app
-/var/www/app/node\u模块
命令:node app.js
adminmongo:
构建:./adminMongo
端口:
- "4455:4455"
链接:
-蒙戈
卷数:
-/adminMongo:/var/www/adminMongo
-/var/www/adminMongo/node\u模块
命令:node app.js
管理员:
构建:/管理
端口:
- "1123:1123"
链接:
-蒙戈
-雷迪斯
卷数:
-/管理员:/var/www/admin
-/var/www/admin/node\u模块
命令:node admin_app.js
nginx:
构建:./nginx
链接:
-app:app
-管理员:管理员
蒙戈:
图片:mongo:2.4
环境:
-MONGO_DATA_DIR=/DATA/db
卷数:
-mongostorage:/data/db
端口:
- "27017:27017"
redis:
图片:redis
卷数:
-./data/redis/db:/data/db
端口:
- "6379:6379"    
注意 我创建了一个简单的节点hello world应用程序进行测试,您需要更新
命令:
,以匹配您在
package.json中拥有的内容

同时 在启动应用程序之前,请运行以下命令清理所有旧容器/网络:

    docker-compose kill
    docker-compose down
    docker network prune
    docker volume prune
要启动服务运行,请执行以下操作:

docker编写构建

防止过度杀戮,但确保您没有使用旧容器
docker组装--强制重新创建

本地测试输出
谢谢但是,在docker-compose.yml上启用管理应用程序上的卷后,我遇到了代码为0的新错误。我可以知道问题出在哪里吗?您不能使用卷共享
节点_卷
,这将产生相同的问题。它正在我的主应用程序上工作,但是管理应用程序返回错误代码0,该错误代码在同一yml文件中具有相同的配置。稍后,我将使用dockerfile和.yml文件编辑问题,以便您可以获得更清晰的图片。您可以删除主机上的所有
node\u模块
,然后尝试执行
docker组合
,看看会发生什么?无论如何,我可以检查或跟踪日志等以了解错误?我已使用nginx.conf更新了问题,谢谢。使用nginx补丁更新了答案,基本上只是将您的配置附加到默认的nginx配置。应工作此错误消息返回:admin_1已退出,代码为0。然而,应用程序_1运行良好。我使用了您共享的代码,一切正常(只是一个hello节点应用程序)。
    mongo_1       | Wed Jul  4 21:50:35.835 [initandlisten] waiting 
    for connections on port 27017

    mongo_1       | Wed Jul  4 21:50:35.835 [websvr] admin web console 
    waiting for connections on port 28017

    app_1         | app listening on port 3000!
    admin_1       | admin app listening on port 1123!
    adminmongo_1  | AdminMongo app listening on port 4455!

    redis_1       | 1:M 04 Jul 21:50:26.523 * Running mode=standalone, 
    port=6379.