【问题标题】:simple docker run target in goland can't find package maingoland中的简单docker运行目标找不到包main
【发布时间】:2022-01-13 18:28:29
【问题描述】:

我正在尝试使用 go1.18 进行一些测试,并认为我会在 2021 年 12 月 16 日构建的 goland Build #GO-213.6461.23 中给 docker run 目标一个镜头。

这是一个简单的 hello world 应用程序,我正在尝试使用 docker 映像设置。似乎找到了 docker server 和 docker image OK,但是当我尝试将运行目标设置为此配置时,我收到一个警告,它找不到 package main。

我已经在配置的屏幕截图中插入。这让我折腾了。

错误消息显示在底部上方的屏幕截图中。

代码是一个简单的hello wordld

package main

import (
    "fmt"
    "time"
)

func main() {
    var test string
    test = "Hi there"
    fmt.Println(test)
    time.Sleep(time.Second * 5)
}

如果在本地机器上运行当然可以正常运行。

运行目标配置如下

这应该足以重现我正在尝试使用的设置。

【问题讨论】:

  • 您能否提供minimal reproducible example 或实际的错误消息? Dockerfile 和应用程序代码中有什么?
  • 一个小评论:main 包应该存在于你的项目本地,GoLand 会将它转移到 Docker 容器中,构建然后运行它。
  • 更新了问题中的详细信息。屏幕截图中显示了错误。

标签: docker ssh goland


【解决方案1】:

确保使用 go.mod 文件中的模块名称。根据您的屏幕截图,您的包路径似乎应该是awesomeProject而不是main

来自 GoLand 文档 (https://www.jetbrains.com/help/go/running-applications.html#create-go-build-configuration):

包路径:要编译的包的完整导入路径(例如,github.com/gorilla/mux)。此字段仅在您选择包运行类型时可用。

或者,您可以使用装订线图标运行应用程序,GoLand 会自动使用正确的包路径创建运行配置。

之后,您可以调用 Run |编辑配置 并选择 Run Target to Docker one。

【讨论】:

  • 谢谢@s0xzwasd。我让应用程序在本地运行,按照您的建议更改目标,现在出现不同的错误:package awsomeProject is not in GOROOT (/usr/local/go/src/awsomeProject) 。也许更接近:)
  • @PeterNunn,确保在 File | 下启用了 Go 模块集成。设置 |去 | Go modules, go.mod 文件存在于您的项目中,并且 Index entire GOPATHFile | 下被禁用设置 |去 | GOPATH。之后,重新创建运行配置。
  • 遗憾的是没有变化。我确实关闭了整个 GOPATH 的索引,并尝试使用和不使用系统 env 标志中的使用 GOPATH,但没有任何乐趣(我假设通过重新创建运行配置,你的意思是重新进行运行目标设置(即拉图片?)。
  • @PeterNunn,请分享一个项目结构。通过重新创建运行配置,我的意思是删除以前的配置(Run | Edit Configurations)并使用main() 函数上方的装订线图标创建一个新配置。
  • 该项目由 /home/pnunn/GolandProjects/awsomeProject 中的一个文件 (main.go) 组成。目录中唯一的其他文件是 go.mod。这一切都在本地运行良好。我会尝试删除并重新创建。
猜你喜欢
  • 1970-01-01
  • 2020-03-14
  • 2013-10-03
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
相关资源
最近更新 更多