Docker 无服务器 - 文件未打包到容器中
Docker with Serverless- files not getting packaged to container
我有一个使用 Localstack 的无服务器应用程序,我正在尝试通过 Docker 完全 运行ning。
我有一个 docker-compose 文件,可以为我启动 localstack。
version: '3.1'
services:
localstack:
image: localstack/localstack:latest
environment:
- AWS_DEFAULT_REGION=us-east-1
- EDGE_PORT=4566
- SERVICES=lambda,s3,cloudformation,sts,apigateway,iam,route53,dynamodb
ports:
- '4566-4597:4566-4597'
volumes:
- "${TEMPDIR:-/tmp/localstack}:/temp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
当我 运行 docker-组合然后使用 SLS 部署我的应用程序到 localstack 时,一切都按预期工作。虽然我想要 docker 到 运行 一切,所以我将 运行 一个 Docker 命令,它将启动 localstack 并将我的服务部署到它。
我已经添加了一个 Docker 文件到我的项目中并且添加了这个
FROM node:16-alpine
RUN apk update
RUN npm install -g serverless; \
npm install -g serverless-localstack;
EXPOSE 3000
CMD ["sls","deploy", "--host", "0.0.0.0" ]
然后我 运行 docker build -t serverless/docker .
然后 docker run -p 49160:3000 serverless/docker
但我收到以下错误
This command can only be run in a Serverless service directory. Make sure to reference a valid config file in the current working directory if you're using a custom config file
我想如果我尝试 运行 SLS 部署在不正确的文件夹中,就会发生这种情况。所以我已经登录到 docker 容器,但看不到我想要 运行 的应用程序,我在打包它所需的 docker 文件中缺少什么?
谢谢
在容器内执行 pwd
命令,同时 运行 它。尝试
docker run -it serverless/docker pwd
显示错误,sls 无法在当前工作目录中找到配置文件。将您的配置文件添加到当前工作目录(在 Dockerfile 中包含此复制)或将其复制到容器中的特定位置并在 CMD 中传递 --config
(sls deploy --config
)
This command can only be run in a Serverless service directory. Make
sure to reference a valid config file in the current working directory
确保安装了无服务器
安装后创建服务
% sls create --template aws-nodejs --path myService
cd 到包含文件的文件夹,serverless.yml
% cd myService
这会将函数部署到 AWS Lambda
% sls deploy
我有一个使用 Localstack 的无服务器应用程序,我正在尝试通过 Docker 完全 运行ning。 我有一个 docker-compose 文件,可以为我启动 localstack。
version: '3.1'
services:
localstack:
image: localstack/localstack:latest
environment:
- AWS_DEFAULT_REGION=us-east-1
- EDGE_PORT=4566
- SERVICES=lambda,s3,cloudformation,sts,apigateway,iam,route53,dynamodb
ports:
- '4566-4597:4566-4597'
volumes:
- "${TEMPDIR:-/tmp/localstack}:/temp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
当我 运行 docker-组合然后使用 SLS 部署我的应用程序到 localstack 时,一切都按预期工作。虽然我想要 docker 到 运行 一切,所以我将 运行 一个 Docker 命令,它将启动 localstack 并将我的服务部署到它。
我已经添加了一个 Docker 文件到我的项目中并且添加了这个
FROM node:16-alpine
RUN apk update
RUN npm install -g serverless; \
npm install -g serverless-localstack;
EXPOSE 3000
CMD ["sls","deploy", "--host", "0.0.0.0" ]
然后我 运行 docker build -t serverless/docker .
然后 docker run -p 49160:3000 serverless/docker
但我收到以下错误
This command can only be run in a Serverless service directory. Make sure to reference a valid config file in the current working directory if you're using a custom config file
我想如果我尝试 运行 SLS 部署在不正确的文件夹中,就会发生这种情况。所以我已经登录到 docker 容器,但看不到我想要 运行 的应用程序,我在打包它所需的 docker 文件中缺少什么?
谢谢
在容器内执行 pwd
命令,同时 运行 它。尝试
docker run -it serverless/docker pwd
显示错误,sls 无法在当前工作目录中找到配置文件。将您的配置文件添加到当前工作目录(在 Dockerfile 中包含此复制)或将其复制到容器中的特定位置并在 CMD 中传递 --config
(sls deploy --config
)
This command can only be run in a Serverless service directory. Make sure to reference a valid config file in the current working directory
确保安装了无服务器
安装后创建服务
% sls create --template aws-nodejs --path myService
cd 到包含文件的文件夹,serverless.yml
% cd myService
这会将函数部署到 AWS Lambda
% sls deploy