首页 > 解决方案 > Docker 没有在 Dockerfile 上运行所有命令

问题描述

我是 docker 的初学者,我在 Youtube 上关注了本教程https://www.youtube.com/watch?v=gAkwW2tuIqE&ab_channel=Fireship

我已经在我的应用程序文件夹中创建了一个 dockerfile。

FROM node:13

WORKDIR /

COPY package*.json ./

RUN npm install
#ngelakuin run di shell (ini buat di shell)

COPY . . 
#copy semua file di dalam directory ini

ENV PORT=3000
#menyesuaikan dimana port aplikasi berjalan, port = 3000

EXPOSE 3000
#expose port public

CMD ["npm", "start"]
#ngelakuin run (cmd)

教程说,当我们这样做时,它应该运行 8 个命令docker build(直到 cmd 命令)。但在我的情况下,只做 5 个(直到COPY . .

这就是 docker build 时终端所做的事情。

[+] Building 12.7s (9/9) FINISHED
 => [internal] load .dockerignore                                                                   0.0s 
 => => transferring context: 34B                                                                    0.0s 
 => [internal] load build definition from Dockerfile                                                0.0s 
 => => transferring dockerfile: 382B                                                                0.0s 
 => [internal] load metadata for docker.io/library/node:13                                          2.7s 
 => => transferring context: 57.03kB                                                                0.2s 
 => [2/5] COPY package*.json ./                                                                     0.0s 
 => [3/5] RUN npm install                                                                           9.3s 
 => [4/5] COPY . .                                                                                  0.1s 
 => exporting to image                                                                              0.2s 
 => => exporting layers                                                                             0.2s 
 => => writing image sha256:93fde5bd0e36d551a0545e1ae6d69b7691d36361b2f75c6eafc2c48cd8ed54d1        0.0s 
 => => naming to docker.io/hollyyph/docker-demo-holly:1.0                                           0.0s 

我检查了我是否可以运行图像,但它不能。变成了这样

\docker-demo-holly > docker run sha256:93fde5bd0e36d551a0545e1ae6d69b7691d36361b2f75c6eafc2c48cd8ed54d1  

> app-service-hello-world@0.0.1 start /
> node index.js

internal/modules/cjs/loader.js:965
  throw err;
  ^

Error: Cannot find module 'express'
Require stack:
- /index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:962:15)
    at Function.Module._load (internal/modules/cjs/loader.js:838:27)
    at Module.require (internal/modules/cjs/loader.js:1022:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/index.js:1:17)
    at Module._compile (internal/modules/cjs/loader.js:1118:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1138:10)
    at Module.load (internal/modules/cjs/loader.js:982:32)
    at Function.Module._load (internal/modules/cjs/loader.js:875:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/index.js' ]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! app-service-hello-world@0.0.1 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the app-service-hello-world@0.0.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.       

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-11-01T19_10_00_543Z-debug.log

标签: docker

解决方案


似乎在查找“express”时存在问题 检查 express 是否作为依赖项添加到 package.json 中。


推荐阅读