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 上运行节点和反应

在 Amazon Elastic Beanstalk 节点之间共享数据

记录 Elastic Beanstalk 节点应用程序

Angular Universal - 部署到 AWS Elastic Beanstalk