在 AWS ElasticBeanstalk 中启动 Node.js 容器的权限错误

Posted

技术标签:

【中文标题】在 AWS ElasticBeanstalk 中启动 Node.js 容器的权限错误【英文标题】:Permission error launching Node.js container in AWS ElasticBeanstalk 【发布时间】:2019-06-15 07:39:46 【问题描述】:

我是使用 AWS 和容器的新手,尝试在 ElasticBeanstalk 上启动 dockerized Node 应用程序时遇到了问题。我可以在多台本地机器上本地运行这个容器,没有任何问题。我真的不确定我应该在哪里解决这个问题。

这是来自 AWS 的错误:

docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:348:启动容器进程导致“exec:\”/\“:权限被拒绝”:未知。

在故障排除中,我尝试通过 CircleCI 推送它并遇到了这个问题:

mkdir: 无法创建目录‘/home/node/app’: 权限被拒绝 以代码 1 退出

是否需要在我缺少的地方设置权限标志?

我的 Dockerfile:

FROM node:8.15.0-jessie
WORKDIR /home/node/app
COPY package*.json ./
RUN npm install
COPY . ./
EXPOSE 3000
CMD ["npm", "start"]

我的 Docker-compose.yml

version: "3"
volumes:
  app_node_modules:
services:
  app:
    build: .
    user: "node"
    volumes:
      - ./:/home/node/app
      - app_node_modules:/home/node/app/node_modules/
    ports:
      - "3000:3000"

任何帮助将不胜感激。

【问题讨论】:

您如何设置您的 EB 环境? 我完成了环境创建并将其设置为 Web 服务器环境,以 Docker 作为平台。然后我上传了我的应用程序的压缩版本,删除了 node_modules 文件夹以避免任何可能的问题。 【参考方案1】:

RUN chown -R root:root /home/node/app/node_modules/

将此添加到您的 DOCKER 文件中

【讨论】:

以上是关于在 AWS ElasticBeanstalk 中启动 Node.js 容器的权限错误的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS 上使用 ElastiCache 和 ElasticBeanstalk 配置 Redis

从在 ElasticBeanstalk 中运行的 Flask 应用程序使用 AWS

如何在 AWS elasticbeanstalk 上部署 symfony 3 项目

强制 https aws elasticbeanstalk

如何在 Elasticbeanstalk 环境中运行的 docker 容器中承担 AWS 角色?

如何在 AWS ElasticBeanstalk 中修改 apache VirtualHost