0
我正在使用Elastic beanstalk啓動一個應用程序,使用nodejs容器和mongodb容器。我已經爲節點網絡應用程序創建了自己的圖像,並且我可以使用此圖像在本地創建容器,並在EC2實例上創建容器,而不存在任何問題。當使用Beanstalk啓動應用程序時,CMD「npm run prod」無法找到我的package.json文件。這裏是我的設置和問題談幾點注意事項:Elastic Beanstalk/Docker - 沒有這樣的文件或目錄package.json
- 採用彈性魔豆多包裝泊塢環境
- 使用Dockerrun.aws.json有兩個圖片文件:蒙戈和定製託管的NodeJS上dockerhub web應用程序圖像
- 我可以拉下圖片並使用'Docker run npm run prod'運行它(它在本地和EB創建的EC2實例上)
- 當EB嘗試啓動圖像(使用相同的命令)時,它出錯了,並且說它找不到package.json(詳情見下面的錯誤)。
我不確定我是否對Elastic Beanstalk的工作原理有誤解,或者是否有其他缺失的東西。
Dockerrun.aws.json文件(圖像名和env乏移除):
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "mongo-vol",
"host": {
"sourcePath": "/var/app/mongo-vol"
}
},
{
"name": "web-vol",
"host": {
"sourcePath": "/var/app/web-vol"
}
}
],
"containerDefinitions": [
{
"name": "mongo",
"image": "mongo:3.4",
"essential": false,
"memory": 128
},
{
"name": "web",
"image": "<IMAGE NAME>",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 3000
}
],
"links": [
"mongo"
],
"mountPoints": [
{
"sourceVolume": "web-vol",
"containerPath": "/starter",
"readOnly": false
}
]
}
]
}
Dockerfile節點網絡應用程序:
"prod": "forever app.js",
:從的package.json
FROM node:6-slim
COPY . /starter
COPY package.json /starter/package.json
WORKDIR /starter
ENV NODE_ENV production
RUN yarn install --production
RUN npm install forever -g
CMD npm run prod
EXPOSE 8888
NPM腳本
來自碼頭集裝箱的錯誤日誌:
改變CMD打壞-c後npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm ERR! Linux 4.9.43-17.38.amzn1.x86_64
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "prod"
npm ERR! node v6.11.2
npm ERR! npm v3.10.10
npm ERR! path /starter/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/starter/package.json'
npm ERR! enoent ENOENT: no such file or directory, open '/starter/package.json'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Please include the following file with any support request:
npm ERR! /starter/npm-debug.log
錯誤日誌 「PWD & & LS -alh & & NPM運行PROD」
/starter
total 12K
drwxr-xr-x 2 root root 4.0K Sep 1 16:01 .
drwxr-xr-x 22 root root 4.0K Sep 1 16:01 ..
-rw-r--r-- 1 root root 885 Sep 1 16:01 npm-debug.log
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm ERR! Linux 4.9.43-17.38.amzn1.x86_64
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "prod"
npm ERR! node v6.11.2
npm ERR! npm v3.10.10
npm ERR! path /starter/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/starter/package.json'
npm ERR! enoent ENOENT: no such file or directory, open '/starter/package.json'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Please include the following file with any support request:
npm ERR! /starter/npm-debug.log
變化CMD爲'的bash -c 「PWD && LS -alh && NPM運行刺」'。在這些更改之後發佈新日誌 –
我向帖子添加了錯誤日誌。它顯示該文件不存在。根本沒有文件存在。如果我SSH入EC2實例並運行Docker運行-it bash,然後在ls in/starter中存在這些文件。再次,我不確定我是否在這裏誤解了某些東西,但這對我來說很奇怪。 –
如果我ssh進入EC2實例並運行sudo docker run bash -c「pwd && ls -alh && npm run prod」它可以工作,並且所有文件都存在。非常困惑 –