1
package.json
{
"scripts": {
"start": "egg-scripts start",
}
}
Dockerfile
FROM node:8.6.0-alpine
RUN apk --update add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# add npm package
COPY package.json /usr/src/app/package.json
RUN npm i --registry=https://registry.npm.taobao.org
# copy code
COPY . /usr/src/app
EXPOSE 7001
CMD npm start
在 Kitematic 中 创建镜像出现以下Log:
npm info it worked if it ends with ok
npm info using npm@5.3.0
npm info using node@v8.6.0
npm info lifecycle liftcorecloudserver@1.0.0~prestart: liftcorecloudserver@1.0.0
npm info lifecycle liftcorecloudserver@1.0.0~start: liftcorecloudserver@1.0.0
> liftcorecloudserver@1.0.0 start /usr/src/app
> egg-scripts start
[egg-scripts] Starting egg application at /usr/src/app
[egg-scripts] Run node /usr/src/app/node_modules/egg-scripts/lib/start-cluster {"title":"egg-server-liftcorecloudserver","framework":"/usr/src/app/node_modules/egg","baseDir":"/usr/src/app"} --title=egg-server-liftcorecloudserver
2018-10-16 00:11:32,197 INFO 33 [master] =================== egg start =====================
2018-10-16 00:11:32,199 INFO 33 [master] node version v8.6.0
2018-10-16 00:11:32,199 INFO 33 [master] egg version 2.10.0
2018-10-16 00:11:32,199 INFO 33 [master] start with options:
{
"framework": "/usr/src/app/node_modules/egg",
"baseDir": "/usr/src/app",
"workers": 2,
"plugins": null,
"https": false,
"title": "egg-server-liftcorecloudserver"
}
2018-10-16 00:11:32,199 INFO 33 [master] start with env: isProduction: true, EGG_SERVER_ENV: undefined, NODE_ENV: production
2018-10-16 00:11:32,215 INFO 33 [master] agent_worker#1:39 start with clusterPort:43941
2018-10-16 00:11:32,776 INFO 39 Plugin development is disabled by env unmatched, require env(local) but got env is prod
2018-10-16 00:11:32,799 INFO 39 [egg:core] App root: /usr/src/app
2018-10-16 00:11:32,799 INFO 39 [egg:core] All *.log files save on "/root/logs/liftcorecloudserver"
2018-10-16 00:11:32,800 INFO 39 [egg:core] Loaded enabled plugin [{"enable":true,"package":"egg-session","name":"session","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-session","version":"3.1.0"},{"enable":true,"package":"egg-security","name":"security","dependencies":[],"optionalDependencies":["session"],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-security","version":"2.4.0"},{"enable":true,"package":"egg-jsonp","name":"jsonp","dependencies":[],"optionalDependencies":["security"],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-jsonp","version":"2.0.0"},{"enable":true,"package":"egg-onerror","name":"onerror","dependencies":[],"optionalDependencies":["jsonp"],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-onerror","version":"2.1.0"},{"enable":true,"package":"egg-i18n","name":"i18n","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-i18n","version":"2.0.0"},{"enable":true,"package":"egg-watcher","name":"watcher","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-watcher","version":"3.0.0"},{"enable":true,"package":"egg-multipart","name":"multipart","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-multipart","version":"2.1.0"},{"enable":true,"package":"egg-schedule","name":"schedule","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-schedule","version":"3.4.0"},{"enable":true,"package":"egg-logrotator","name":"logrotator","dependencies":["schedule"],"optionalDependencies":[],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-logrotator","version":"3.0.3"},{"enable":true,"package":"egg-static","name":"static","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/config/plugin.js","path":"/usr/src/app/node_modules/egg-static","version":"2.1.1"},{"enable":true,"package":"egg-view","name":"view","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/node_modules/egg/config/plugin.js","path":"/usr/src/app/node_modules/egg-view","version":"2.1.0"},{"enable":true,"package":"egg-es","name":"elasticsearch","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/config/plugin.js","path":"/usr/src/app/node_modules/egg-es","version":"1.0.1"},{"enable":true,"package":"egg-jwt","name":"jwt","dependencies":[],"optionalDependencies":["onerror"],"env":[],"from":"/usr/src/app/config/plugin.js","path":"/usr/src/app/node_modules/egg-jwt","version":"3.1.2"},{"enable":true,"package":"egg-validate","name":"validate","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/config/plugin.js","path":"/usr/src/app/node_modules/egg-validate","version":"1.1.1"},{"enable":true,"package":"egg-cors","name":"cors","dependencies":[],"optionalDependencies":[],"env":[],"from":"/usr/src/app/config/plugin.js","path":"/usr/src/app/node_modules/egg-cors","version":"2.1.0"}]
2018-10-16 00:11:32,812 INFO 39 [egg:logger] init all loggers with options: {"dir":"/root/logs/liftcorecloudserver","encoding":"utf8","env":"prod","level":"INFO","consoleLevel":"INFO","disableConsoleAfterReady":true,"outputJSON":false,"buffer":true,"appLogName":"liftcorecloudserver-web.log","coreLogName":"egg-web.log","agentLogName":"egg-agent.log","errorLogName":"common-error.log","coreLogger":{},"allowDebugAtProd":false,"type":"agent"}
2018-10-16 00:11:32,962 INFO 39 [egg-elasticsearch] connecting elasticsearch server
2018-10-16 00:11:33,016 INFO 39 [egg:core] dump config after load, 5ms
2018-10-16 00:11:33,074 INFO 39 [egg-watcher:agent] watcher start success
2018-10-16 00:11:33,077 ERROR 39 nodejs.TypeError: Cannot read property 'cron' of undefined
at Function.get schedule [as schedule] (/usr/src/app/node_modules/egg-multipart/app/schedule/clean_tmpdir.js:13:49)
at ScheduleLoader.load (/usr/src/app/node_modules/egg-schedule/lib/load_schedule.js:27:24)
at module.exports.app (/usr/src/app/node_modules/egg-schedule/lib/load_schedule.js:15:6)
at Schedule.init (/usr/src/app/node_modules/egg-schedule/lib/schedule.js:25:27)
at agent.beforeStart (/usr/src/app/node_modules/egg-schedule/agent.js:16:20)
at Object.callFn (/usr/src/app/node_modules/egg-core/lib/utils/index.js:36:42)
at process.nextTick (/usr/src/app/node_modules/egg-core/lib/egg.js:224:13)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:667:11)
pid: 39
hostname: 5341a179a76a
2018-10-16 00:11:33,077 ERROR 39 nodejs.TypeError: Cannot read property 'cron' of undefined
at Function.get schedule [as schedule] (/usr/src/app/node_modules/egg-multipart/app/schedule/clean_tmpdir.js:13:49)
at ScheduleLoader.load (/usr/src/app/node_modules/egg-schedule/lib/load_schedule.js:27:24)
at module.exports.app (/usr/src/app/node_modules/egg-schedule/lib/load_schedule.js:15:6)
at Schedule.init (/usr/src/app/node_modules/egg-schedule/lib/schedule.js:25:27)
at agent.beforeStart (/usr/src/app/node_modules/egg-schedule/agent.js:16:20)
at Object.callFn (/usr/src/app/node_modules/egg-core/lib/utils/index.js:36:42)
at process.nextTick (/usr/src/app/node_modules/egg-core/lib/egg.js:224:13)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:667:11)
pid: 39
hostname: 5341a179a76a
2018-10-16 00:11:33,078 ERROR 39 [agent_worker] start error, exiting with code:1
2018-10-16 00:11:33,078 ERROR 39 [agent_worker] exit with code:1
2018-10-16 00:11:33,114 ERROR 33 nodejs.AgentWorkerDiedError: [master] agent_worker#1:39 died (code: 1, signal: null)
at Master.onAgentExit (/usr/src/app/node_modules/egg-cluster/lib/master.js:318:17)
at emitOne (events.js:115:13)
at Master.emit (events.js:210:7)
at Messenger.sendToMaster (/usr/src/app/node_modules/egg-cluster/lib/utils/messenger.js:133:17)
at Messenger.send (/usr/src/app/node_modules/egg-cluster/lib/utils/messenger.js:98:12)
at ChildProcess.agentWorker.once (/usr/src/app/node_modules/egg-cluster/lib/master.js:217:22)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at ChildProcess.emit (events.js:213:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
name: "AgentWorkerDiedError"
pid: 33
hostname: 5341a179a76a
2018-10-16 00:11:33,114 ERROR 33 [master] agent_worker#1:39 start fail, exiting with code:1
2018-10-16 00:11:33,115 ERROR 33 [master] exit with code:1
events.js:182
throw er; // Unhandled 'error' event
^
Error: spawn node /usr/src/app/node_modules/egg-scripts/lib/start-cluster {"title":"egg-server-liftcorecloudserver","framework":"/usr/src/app/node_modules/egg","baseDir":"/usr/src/app"} --title=egg-server-liftcorecloudserver fail, exit code: 1
at ChildProcess.child.once.code (/usr/src/app/node_modules/egg-scripts/lib/cmd/start.js:171:31)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at ChildProcess.emit (events.js:213:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
npm info lifecycle liftcorecloudserver@1.0.0~start: Failed to exec start script
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! liftcorecloudserver@1.0.0 start: `egg-scripts start `
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the liftcorecloudserver@1.0.0 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/2018-10-15T16_11_33_150Z-debug.log
不用docker,npm start正常