Elastic Beanstalk 上的节点 Docker 容器找不到本地 Gulp
Posted
技术标签:
【中文标题】Elastic Beanstalk 上的节点 Docker 容器找不到本地 Gulp【英文标题】:Node Docker Container On Elastic Beanstalk Can't Find Local Gulp 【发布时间】:2017-01-19 15:20:48 【问题描述】:我正在尝试将单个 docker 容器部署到弹性 beanstalk 和我的运行命令 gulp production && node server.js
。 Docker 不断抛出错误Local gulp not found in /app/user ... try running npm install gulp
。我尝试在我的 package.json 文件中将 gulp 列为 depdency 和 devDependecy,但这并不能解决问题。我还尝试在我的 Dockerfile 中全局安装 gulp。
谁能告诉我我的设置有什么问题?这是我的文件:
Dockerfile
FROM node:6.5.0
# Internally, we arbitrarily use port 3000
ENV PORT 3000
# Create some needed directories
RUN mkdir -p /app/user/
WORKDIR /app/user/
# setup path
ENV PATH /app/user/node_modules/.bin:$PATH
RUN npm install -g gulp
# Install vim
RUN apt-get update && apt-get --yes --force-yes install vim
# Setup app
ADD package.json /app/user/
RUN cd /app/user && npm install
# ADD . /app/user/
EXPOSE 3000
CMD gulp production && node server.js
Dockerrun.aws.json
"AWSEBDockerrunVersion": "1",
"Logging": "/var/log/pm2",
"Volumes": [
"HostDirectory": "/var/app/current",
"ContainerDirectory": "/app/user"
]
【问题讨论】:
Why do we need to install gulp globally and locally?的可能重复 你需要在本地安装 gulp(在你的 package.json、devDependencies 中列出)。 @Alkaline 我已经将 gulp 列为 devDependency 甚至尝试将其列为依赖项。这并没有解决问题。我还尝试在我的 docker 文件中全局安装 gulp。 【参考方案1】:对于那些可能遇到类似问题的人来说,这里是我的 Dockerfile 和 Dockerrun.aws.json 文件,它们可用于将节点容器部署到弹性 beanstalk
Dockerfile
FROM node:6.5.0
# Internally, we arbitrarily use port 3000
ENV PORT 3000
# Create some needed directories
RUN mkdir -p /app/user/
WORKDIR /app/user/
# setup path
ENV PATH /app/user/node_modules/.bin:$PATH
RUN npm install -g gulp
RUN npm install gulp
# Install vim
RUN apt-get update && apt-get --yes --force-yes install vim
# Setup app
ADD package.json /app/user/
RUN cd /app/user && npm install
ADD . /app/user/
EXPOSE 3000
CMD gulp production && node server.js
Dockerrun.aws.json
"AWSEBDockerrunVersion": "1",
"Logging": "/var/log/pm2",
"Volumes": []
【讨论】:
以上是关于Elastic Beanstalk 上的节点 Docker 容器找不到本地 Gulp的主要内容,如果未能解决你的问题,请参考以下文章
Elastic BeanStalk 节点 Js/Angular 部署问题
AWS EC2 / Elastic Beanstalk |如何按域列入白名单?
在 AWS Elastic Beanstalk 上运行节点和反应