使用Golang通过Local Git将简单Web应用部署到Azure的方法
使用Golang通过Local Git将简单Web应用部署到Azure的方法 我一直在尝试部署我的Web应用程序,之前尝试使用Docker,但在Dockerfile配置方面遇到了困难。因此我决定使用本地Git部署到Azure,但仍然存在问题。以下是我的Web应用程序仓库:https://github.com/AOhassan/GoSystemOfEquations
谢谢,我将尝试部署到 Azure 并保持更新。
更多关于使用Golang通过Local Git将简单Web应用部署到Azure的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
发现并修复了问题。原来是我模板前的斜杠在提供服务时导致的,哈哈
我已将您的应用程序进行了Docker化,请参阅 https://github.com/lutzhorn/GoSystemOfEquations/tree/dockerize
值得注意的事项:
- 我已移除
/src目录 - Go应用程序被编译为静态二进制文件
app,请参阅Makefile - Docker镜像基于
scratch开始构建,未使用任何操作系统 - 静态二进制文件和模板目录被复制到空镜像中,请参阅
Dockerfile
使用 make 构建所有内容:
$ make all
构建容器可以这样运行:
$ docker run -p 8080:8080 --rm app
我没有将镜像发布到Docker仓库,也没有尝试在Azure上运行它。
一切都能正常运行,直到我访问本地主机时出现以下情况。以下是相关图片。
这是我的文件结构。

由于无法在8080端口启动服务,我切换到了8084端口

程序运行后出现了这个情况

如需更多信息,请告知我
以下是使用本地Git将Go Web应用部署到Azure App Service的详细步骤和示例配置:
1. 准备Azure App Service
首先在Azure门户创建Go运行时环境的App Service:
- 选择运行时栈:Go 1.21(或最新版本)
- 操作系统:Linux
2. 配置应用设置
在App Service的配置中设置以下环境变量:
SCM_DO_BUILD_DURING_DEPLOYMENT=true
3. 创建部署配置文件
在项目根目录创建 .deployment 文件:
[config]
command = deploy.cmd
创建 deploy.cmd 部署脚本:
@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off
echo "开始Go应用部署..."
:: 安装依赖
echo "安装Go模块..."
go mod download
:: 构建应用
echo "构建Go应用..."
go build -o main
echo "部署完成"
4. 配置Go模块
确保项目有正确的 go.mod 文件。根据你的仓库,可能需要调整:
module github.com/AOhassan/GoSystemOfEquations
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
// 其他依赖...
)
5. 主程序配置
创建或修改 main.go 确保监听正确的端口:
package main
import (
"log"
"net/http"
"os"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Go应用已在Azure运行"))
})
log.Printf("服务器监听端口 %s", port)
log.Fatal(http.ListenAndServe(":"+port, nil))
}
6. 本地Git部署
# 添加Azure Git远程仓库
git remote add azure https://<your-app-name>.scm.azurewebsites.net:443/<your-app-name>.git
# 推送代码部署
git push azure main
7. 部署验证
部署完成后,访问你的App Service URL,应该能看到应用正常运行。
关键注意事项:
- Azure会自动检测Go项目并运行
go build -o main - 确保编译后的二进制文件名为
main - 应用必须监听
PORT环境变量指定的端口 - 所有依赖必须在
go.mod中明确定义
根据你的仓库代码,可能需要调整导入路径和依赖管理。部署过程中可以在Azure门户的"部署中心"查看详细日志。

