首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在码头上运行高丽服务器

如何在码头上运行高丽服务器
EN

Stack Overflow用户
提问于 2022-08-29 01:57:31
回答 1查看 168关注 0票数 0

我用golang设置了一个简单的服务器:

代码语言:javascript
运行
复制
package main

import (
    "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的样子:

代码语言:javascript
运行
复制
FROM golang:1.18

WORKDIR $GOPATH/src

COPY . .

RUN go mod download
RUN go build -o /golang-server

EXPOSE 8080

CMD ["golang-server"]

我在主目录中运行这些docker命令:

代码语言:javascript
运行
复制
docker build . -t golang-server 

docker run --network=golang-server --name=golang-server golang-server

但是,当我运行时,我会得到这个错误:

docker:来自守护进程的错误响应:未能创建shim任务: OCI运行时创建失败: runc创建失败:无法启动容器进程: exec:“golang”:可执行文件未在$PATH中找到:未知。

为了成功地部署到docker,我应该设置什么dockerfile?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-29 02:23:33

这个问题与您在Dockerfile CMD ["golang-server"]中的最后一行有关。当您把它放在那里时,系统(容器内部)试图在$PATH变量golang-server中找到一个可执行文件。

要解决这个问题,您只需在用CMD ["/golang-server"] ( /RUN go build -o /golang-server)构建应用程序之后,将最后一行从Dockerfile编辑到RUN go build -o /golang-server。最后一个Dockerfile应该是这样的:

代码语言:javascript
运行
复制
FROM golang:1.18

WORKDIR $GOPATH/src

COPY . .

RUN go mod download
RUN go build -o /golang-server

EXPOSE 8080

CMD ["/golang-server"]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73523492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档