创建成功点击进入服务,开始创建函数
选择 使用自定义运行时创建,
请求处理程序类型选择 处理 HTTP 请求,
运行环境选择 Ruby 自定义运行时 Debian 9,
代码上传方式选择 使用示例代码,
启动命令留空,我们用 bootstrap 启动,端口写 4567,
这样点击创建后,就跳转到函数的 web IDE(像 vscode) 里了
Terminal 菜单上 new terminal
代码部分
bundle init
生成个 Gemfile
Gemfile 加上 sinatra,我试图用 gem sources 添加 ruby-china 的源,但 bundle install 没有成功,原因不明,所以直接把 Gemfile 里的 source 改了。
# Gemfile
# frozen_string_literal: true
source "https://gems.ruby-china.com"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
ruby "2.7.0"
# gem "rails"
gem 'sinatra'
# gem 'puma'
接着开始 bundle install,非常重要,这里必须将用到的依赖库 gem 也一并打包了 (另一个方法就创建层,这样可以使用公用 gem,我没试过,这里就不说了)
bundle install --path vendor/bundle
安装完成后再建个 bootstrap 文件(注意:没有后缀名)用于启动,执行 chmod 755 bootstrap、chmod 777 bootstrap 或 chmod +x bootstrap 赋予文件的可执行权限。
# bootstrap
#!/bin/bash
bundle exec ruby server.rb -o 0.0.0.0 -e production
建完后,修改权限
chmod 755 bootstrap
再把 server.rb 文件改改
# server.rb
require 'sinatra'
get '/' do
'Hello world!'
end
然后点击按钮 部署代码 就可以成功部署了
5、访问验证
最后再检查下函数的 触发器管理 有没有创建了 HTTP 类型的触发器,看看设置是否没问题。 这样就可以 访问触发器的公网访问地址,看看是否返回 hello world
curl https://sendxxx-service-fkhamynmsx.cn-guangzhou.fcapp.run
这样整个部署过程就完成了,一个 hello world 小服务就可以访问了。