node.js – 学习NodeJS和MongoDB Docker组成

我有一个使用MongoDB的NodeJS项目.我想在Docker容器中运行这个服务,但是尽管有许多基于我的学习的例子,但这不起作用.

这是我的/ heimdall_jwt / Dockerfile:

FROM node:9-alpine
workdir /usr/src/app
copY package.json /usr/src/app
RUN npm install
RUN npm install pm2 -g
copY . /usr/src/app
EXPOSE 3000
CMD ["pm2-docker","start","process.json"]

这是我的/heimdall_jwt/docker-compose.yml

version: '2'
    # Define the services/containers to be run
services:
    myapp: #name of your service
        build: ./ # specify the directory of the Dockerfile
        ports:
          - "3000:3000" #specify ports forwarding
        links:
          - database # link this service to the database service
        volumes:
          - .:/usr/src/app
        depends_on:
          - database    
    database: # name of the service
       image: mongo # specify image to build container from

我尝试通过运行:$docker-compose up –build
这导致mongo正在构建和启动.这是浓缩输出

Building myapp
Step 1/8 : FROM node:9-alpine
...
Step 4/8 : RUN npm install
 ---> Using cache
 ---> befb91b1324c
...
Removing intermediate container 945eb0ad40d5
Successfully built b500f7ec9b89
Successfully tagged heimdalljwt_myapp:latest
Creating heimdalljwt_database_1 ...
Creating heimdalljwt_database_1 ... done
Creating heimdalljwt_myapp_1 ...
Creating heimdalljwt_myapp_1 ... done
Attaching to heimdalljwt_database_1,heimdalljwt_myapp_1
database_1  | 2017-11-25T21:15:39.001+0000 I INDEX    [initandlisten]    building index using bulk method; build may temporarily use up to 500 megabytes of RAM
database_1  | 2017-11-25T21:15:39.002+0000 I INDEX    [initandlisten] build index done.  scanned 0 total records. 0 secs
database_1  | 2017-11-25T21:15:39.003+0000 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 3.4
database_1  | 2017-11-25T21:15:39.005+0000 I NETWORK  [thread1] waiting for connections on port 27017
myapp_1     | 0|heimdall | Error: Cannot find module 'bcryptjs'
myapp_1     | 0|heimdall |     at Function.Module._resolveFilename (module.js:542:15)
myapp_1     | 0|heimdall |     at Function.Module._load (module.js:472:25)
myapp_1     | 0|heimdall |     at Module.require (module.js:585:17)
myapp_1     | 0|heimdall |     at require (internal/module.js:11:18)
myapp_1     | 0|heimdall |     at Object.disconnected

我不确定这里发生了什么,但我猜测依赖关系要么没有安装,要么没有被复制到工作目录中.怎么样

更新
从原始帖子修改,因为我仍在努力让这个工作.

最佳答案
你应该在npm install之后复制文件.现在,您正在安装依赖项,然后复制所有内容,因此您实际上取消了该安装,并且您没有依赖项.

在您的Dockerfile中,您有:

...
RUN npm install
RUN npm install pm2 -g
copY . /usr/src/app
...

它应该是:

...
copY . /usr/src/app
RUN npm install
RUN npm install pm2 -g
...

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...