如何使用Serverless Devs部署golang进程,golang进程启动的时候需要访问config.yaml,怎么挂载这个配?
您可以使用Serverless Devs提供的配置文件来部署golang进程,并且可以通过挂载config.yaml文件来让进程访问配置文件。具体操作步骤为:在Serverless Devs配置文件中添加挂载配置文件的参数,例如:
- name: my-golang-function
runtime: custom
handler: main
codeUri: ./
customContainerConfig:
image: registry.cn-hangzhou.aliyuncs.com/aliyunfc/golang:1.13.8
command: ["./main"]
args: ["--config", "/mnt/auto/config.yaml"]
mountPoints:
- sourceVolume: my-config-volume
destinationPath: /mnt/auto
events:
- http:
path: /hello
method: GET
其中,mountPoints
参数用于挂载配置文件,sourceVolume
参数指定配置文件所在的本地目录,destinationPath
参数指定配置文件在容器中的挂载路径。在golang进程启动时,可以通过--config
参数指定配置文件的路径,例如:./main --config /mnt/auto/config.yaml
。
可以通过在Serverless Devs的资源配置文件中指定golang进程启动需要访问的config.yaml文件,然后将该文件挂载至golang进程所在的容器中,以便golang进程能够访问到该配置文件。
app_name: "my_app"
app_port: 8080
db_host: "localhost"
db_port: 3306
db_name: "my_db"
db_user: "root"
db_pass: "password"
ROSTemplateFormatVersion: "2015-09-01"
Transform: "Aliyun::Serverless-2018-04-03"
Resources:
my_golang_function:
Type: "Aliyun::Serverless::Function"
Properties:
Handler: "my_golang_function"
Runtime: "custom"
CodeUri: "./"
MemorySize: 128
Timeout: 60
EnvironmentVariables:
CONFIG_PATH: "/mnt/conf/config.yaml"
Mounts:
- type: bind
source: ${PWD}/config.yaml
target: /mnt/conf/config.yaml
在上述代码中,我们创建了一个名为
my_golang_function
的Serverless函数,并指定了它的处理程序为my_golang_function
。我们使用了custom
作为golang进程的运行时,并将代码目录./
作为代码包上传至阿里云函数计算平台。我们还指定了该函数执行的内存大小和最长执行时间。为了将config.yaml文件挂载到golang进程所在的容器中,我们使用了
EnvironmentVariables
和Mounts
两个配置项。其中,EnvironmentVariables
用于传递一些环境变量至容器中,我们指定了CONFIG_PATH
环境变量的值为/mnt/conf/config.yaml
,即我们配置文件的挂载路径;而Mounts
则用于在容器中挂载一些文件或目录,我们指定将当前目录下的config.yaml文件挂载到容器中的/mnt/conf/config.yaml路径下。
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
)
func main() {
confPath := os.Getenv("CONFIG_PATH")
content, err := ioutil.ReadFile(confPath)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(content))
}
我们通过调用
os.Getenv
函数获取环境变量CONFIG_PATH
的值,并通过ioutil.ReadFile
函数读取指定路径下的文件内容。最后,我们使用fmt.Println
函数将内容输出至控制台。在这个例子中,我们将读取并输出config.yaml文件的全部内容。实际上,在真实的golang应用中,我们可以根据需要自己解析、使用该配置文件。
给你个模板:https://github.com/VinerFiner/start-cloudreve
此答案来自钉钉群“阿里函数计算官网客户"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。