首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头-组成没有完成npm的安装。

码头-组成没有完成npm的安装。
EN

Stack Overflow用户
提问于 2016-09-28 04:30:40
回答 1查看 1.4K关注 0票数 1

我刚开始写作,我想把它应用到我目前的开发中。

在我运行docker-compose up -d之后,一切都开始得很好,看上去也不错。但是我的nodejs应用程序没有正确安装。npm install似乎还没有完成,我不得不在容器中手动运行docker exec -it api bash

这是我的船坞写作。

代码语言:javascript
复制
version: '2'

services:
  app:
    build: .
    container_name: sparrow-api-1
    volumes:
      - .:/usr/src/app
      - $HOME/.aws:/root/.aws
    working_dir: /usr/src/app
    environment:
      - SPARROW_EVENT_QUEUE_URL=amqp://guest:guest@rabbitmq:5672
      - REDIS_URL=redis
      - NSOLID_APPNAME=sparrow-api
      - NSOLID_HUB=registry:4001
      - NODE_ENV=local
      - REDIS_PORT=6379
      - NODE_PORT=8081
      - SOCKET_PORT=8002
      - ELASTICSEARCH_URL=elasticsearch
      - STDIN_OPEN=${STDIN_OPEN}
    networks:
     - default
    depends_on:
      - redis
      - rabbitmq
      - elasticsearch
    expose:
      - "8081"
    ports:
      - "8081:8081"
    command: bash docker-command.sh


  redis:
    container_name: redis
    image: redis:3.0.7-alpine
    networks:
     - default
    ports:
      - "6379:6379"

  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:3.6.2-management
    networks:
     - default
    ports:
      - "15672:15672"

  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch:1.5.2
    networks:
     - default
    ports:
      - "9200:9200"
      - "9300:9300"

  registry:
    image: nodesource/nsolid-registry
    container_name: registry
    networks:
     - default
    ports:
      - 4001:4001

  proxy:
    image: nodesource/nsolid-hub
    container_name: hub
    networks:
     - default
    environment:
      - REGISTRY=registry:4001
      - NODE_DEBUG=nsolid

  console:
    image: nodesource/nsolid-console
    container_name: console
    networks:
     - default
    environment:
      - NODE_DEBUG=nsolid
      - NSOLID_APPNAME=console
      - NSOLID_HUB=registry:4001
    command: --hub hub:9000
    ports:
      - 3000:3000

# don't forget to create network as well
networks:
  default:
    driver: bridge

这是我的码头长官

代码语言:javascript
复制
#!/usr/bin/env bash

# link the node modules to the root directory of our app, if not exists
modules_link="/usr/src/app/node_modules"
if [ ! -d "${modules_link}" ]; then
  ln -s /usr/lib/app/node_modules ${modules_link}
fi

if [ -n "$STDIN_OPEN" ]; then
  # if we want to be interactive with our app container, it needs to run in
  # the background
  tail -f /dev/null
else
  nodemon
fi

这是我的Dockerfile

代码语言:javascript
复制
FROM nodesource/nsolid:latest

RUN mkdir /usr/lib/app

WORKDIR /usr/lib/app

COPY [".npmrc", "package.json", "/usr/lib/app/"]

RUN npm install \
  && npm install -g mocha \
  && npm install -g nodemon \
  && rm -rf package.json .npmrc
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-28 04:50:24

在您的Dockerfile中,您首先运行的是没有任何参数的npm install

代码语言:javascript
复制
RUN npm install \
  && npm install -g mocha \

这将导致非零退出代码,并且由于&&,以下命令没有执行。不过,这也会使构建失败,所以我猜您已经有了一个工作映像,并在以后添加了npm指令。要重建映像,请使用docker-compose build或简单的docker-compose up --build。默认情况下,只有在图像还不存在的情况下,docker-compose up才会生成图像。

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

https://stackoverflow.com/questions/39738080

复制
相关文章

相似问题

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