为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Docker 容器上运行 golang web 应用程序

如何在 Docker 容器上运行 golang web 应用程序

Go
幕布斯7119047 2023-05-15 10:05:08
我有一个使用 go 语言作为后端的网络应用程序。当我运行我的网站时,我只是这样做go build; ./projectName,然后它将在本地服务器端口 8000 上运行。如何在容器上运行此 Web 应用程序?我可以在容器上运行像 nginx 这样的示例图像,但是如何为我的项目创建我自己的图像。我使用以下代码在我的项目文件夹中创建了一个 Dockerfile:FROM nginx:latest WORKDIR static/html/ COPY . /usr/src/app然后使用 Dockerfile 制作图像,但是当我在容器上运行它并转到 localhost:myPort/static/html/page.html 时,它说找不到 404 页面。我的另一个问题是,docker 是否只能在容器上运行静态页面?因为我的站点可以接收和发送数据。谢谢这是我的 docker 文件(./todo 是我的项目名称和文件夹名称)这是我的终端(你可以看到容器立即退出)
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

这是我为我的 Golang 网络应用程序使用框架所做的Gin-gonic- 我的 Dockerfile:


FROM golang:latest

# Author

MAINTAINER dangminhtruong

# Create working folder

RUN mkdir /app

COPY . /app

RUN apt -y update && apt -y install git

RUN go get github.com/go-sql-driver/mysql

RUN go get github.com/gosimple/slug

RUN go get github.com/gin-gonic/gin

RUN go get gopkg.in/russross/blackfriday.v2

RUN go get github.com/gin-gonic/contrib/sessions

WORKDIR /app 

然后构建docker镜像


docker build -t web-app:latest .


最后,启动我的网络应用程序


docker run -it -p 80:8080 -d web-app:latest go run main.go //My webapp start at 8080 port


希望这有帮助


查看完整回答
反对 回复 2023-05-15
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

我猜你没有在容器外暴露 Docker 端口。这就是为什么您看不到任何输出而不仅仅是特定于 GO 程序的原因。尝试将以下行添加到您的 docker compose 文件中


EXPOSE 80(whichever port you want it to be)

EXPOSE 443

EXPOSE 3306

这将使容器可以从外部访问


查看完整回答
反对 回复 2023-05-15
?
12345678_0001

TA贡献1802条经验 获得超5个赞

  1. 你不需要 Nginx 在 Go 中运行服务器

  2. 最好在 Dockerfile 中构建一个二进制文件

您的 Dockerfile 可能如下所示:

FROM golang:latest 

RUN mkdir /app 

ADD . /app/ 

WORKDIR /app 

RUN go build -o main .

EXPOSE 8000

CMD ["/app/main"]


查看完整回答
反对 回复 2023-05-15
  • 3 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信