我用 golang 设置了一个简单的服务器:package mainimport ( "golang-server/database" "golang-server/helper" "log" "net/http")func main() { database.Connect() port := helper.GetPort() SetupRoutes() log.Printf("connect to http://localhost:%s/ for GraphQL playground", port) log.Fatal(http.ListenAndServe(":"+port, router))}这是我的 dockerfile 的样子:FROM golang:1.18WORKDIR $GOPATH/srcCOPY . .RUN go mod downloadRUN go build -o /golang-serverEXPOSE 8080CMD ["golang-server"]我在主目录中运行这些 docker 命令:docker build . -t golang-server docker run --network=golang-server --name=golang-server golang-server但是,当我运行时出现此错误:docker:来自守护进程的错误响应:创建垫片任务失败:OCI 运行时创建失败:runc 创建失败:无法启动容器进程:exec:“golang-server”:在 $PATH 中找不到可执行文件:未知。我应该如何设置 dockerfile 才能成功部署到 docker?
1 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
问题与您在 Dockerfile 中的最后一行有关CMD ["golang-server"]。当你把它放在那里时,系统(在容器内部)试图在你的$PATH变量中找到一个名为golang-server.
要解决此问题,一旦您在( )CMD ["/golang-server"]中构建应用程序,您只需将 Dockerfile 中的最后一行编辑为。最终的 Dockerfile 应该是这样的:/RUN go build -o /golang-server
FROM golang:1.18
WORKDIR $GOPATH/src
COPY . .
RUN go mod download
RUN go build -o /golang-server
EXPOSE 8080
CMD ["/golang-server"]
- 1 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消