Невозможно развернуть 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, чтобы вы не забыли