Невозможно развернуть Go в Oracle Cloud Function с помощью Cloud Shell
Я попытался создать и развернуть функции Oracle Cloud, следуя инструкциям официальной документации . Я могу создавать и развертывать, используя среду выполнения java, но когда я развертываю среду выполнения, всегда возвращаю ошибку.
Я попытался запустить функцию Go с помощью этой команды в Oracle Cloud Shell:
fn init --runtime go hello-go
затем я попытался развернуть его
fn -v deploy --app test
но он вернул ошибку, как показано ниже:
Deploying hello-go to app: test
Bumped to version 0.0.7
Building image bom.ocir.io/bmptwl2psusa/repo/hello-go:0.0.7
FN_REGISTRY: bom.ocir.io/bmptwl2psusa/repo
Current Context: ap-mumbai-1
Sending build context to Docker daemon 5.632kB
Step 1/10 : FROM fnproject/go:dev as build-stage
---> 96c8fb94a8e1
Step 2/10 : WORKDIR /function
---> Using cache
---> 8961dd299ec1
Step 3/10 : WORKDIR /go/src/func/
---> Using cache
---> 5a4c2c6e13f1
Step 4/10 : ENV GO111MODULE=on
---> Using cache
---> 22022ff2fcf8
Step 5/10 : COPY . .
---> 714622a6ff03
Step 6/10 : RUN cd /go/src/func/ && go build -o func
---> Running in 39fedbc476f4
build func: cannot find module for path github.com/fnproject/fdk-go
The command '/bin/sh -c cd /go/src/func/ && go build -o func' returned a non-zero code: 1
Fn: error running docker build: exit status 1
Когда я использую среду выполнения java с
fn init --runtime java hello-java
команда, она успешно развернута. Почему при использовании go всегда происходит сбой?
Я пытался бежать
go build -o func
в
hello-go
каталог, но он вернулся:
go: finding module for package github.com/fnproject/fdk-go
go: writing stat cache: mkdir /usr/share/gocode/pkg: permission denied
go: downloading github.com/fnproject/fdk-go v0.0.3
func.go:10:2: mkdir /usr/share/gocode/pkg: permission denied
Я знаю, что это произошло, потому что
/usr/share/gocode/
каталог находится под пользователем root, но я не знаю, как изменить разрешение для этой папки, потому что Oracle Cloud Shell не может использовать пользователя root или sudo. (на основе этого ответа )
Возможно, я смогу это сделать, если использую настоящую оболочку виртуальной машины или локальную оболочку / терминал, но я хочу использовать Oracle Cloud Shell, потому что я просто выполнил официальные инструкции, которые предложили мне использовать Oracle Cloud Shell, поэтому как развернуть Oracle Cloud Functions с помощью среды выполнения Go, используя Oracle Cloud Shell?
В основном официальная документация дает только примеры с использованием среды выполнения Java, что делает меня параноиком при использовании go.
1 ответ
Это ошибка в облачной оболочке, которую мы пытаемся решить наилучшим образом.
В качестве краткосрочного обходного пути вы можете сделать это один раз:
mkdir ${HOME}/gopath
Затем установите это в своем терминале:
export GOPATH=${HOME}/gopath
Вероятно, вам следует отредактировать файл ~ / .bashrc, чтобы автоматически установить переменную GOPATH, чтобы вы не забыли