1

我正在尝试为本地无服务器开发设置 docker 映像,但在使用卷访问文件时遇到问题。

Dockerfile

FROM node:8.10

ADD . /code
WORKDIR /code


RUN npm install -g serverless
RUN npm install serverless-offline

EXPOSE 3000

# COPY . /code

CMD ["serverless", "offline", "--host", "0.0.0.0", "--port", "5000"]

docker-compose-yml

version: "3"
services:
  serverless_proj_1:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:5000"
    volumes:
      - .:/code
      - /code/node_modules

Docker 正在正确监听我所有的无服务器端点:

在此处输入图像描述

但是,当我从 Postman 触发其中一个 api 端点时,这是我得到的错误: 在此处输入图像描述

  • docker container exec apps-services_serverless_proj_1_1 pwd返回/code
  • docker container exec apps-services_serverless_proj_1_1 ls -al返回我的代码库
  • docker container exec apps-services_serverless_proj_1_1 ls /code -al再次返回我的代码库(两个命令的总数相同)
  • docker container exec apps-services_serverless_proj_1_1 ls /code/node_modules -al返回我所有的依赖项(共 3074 个)
4

1 回答 1

1

我没有看到RUN npm install. 由于您正在为 node_modules 标记一个占位符,因此您需要将它们安装在容器内。

编辑

请尝试附加到您正在运行的 docker 容器并查看 node_modules 文件夹。只是要仔细检查 a) 你有一个,b) 它位于它应该在的位置,c) 它包含你期望的所有模块。

你可以通过运行docker container exec -it serverless_proj_1 /bin/bash这个来做到这一点,默认情况下应该把你放在 /code 目录中,然后运行ls -al

于 2020-03-05T17:44:57.713 回答