Golang中如何为非HTTP应用程序设置运行端口

Golang中如何为非HTTP应用程序设置运行端口 有一个开源项目

enter image description here

在这个应用程序中,我没有找到HTTP端口的配置。当我构建并运行它时,它使用了8080端口。我想更改它,但是该如何操作呢?

2 回复

更多关于Golang中如何为非HTTP应用程序设置运行端口的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在这个项目中,端口配置是通过环境变量来管理的。具体来说,端口设置在 config/config.go 文件中处理。以下是相关代码示例:

package config

import (
	"os"
	"strconv"
)

type Config struct {
	Port int
}

func Load() *Config {
	port := 8080 // 默认端口
	if portStr := os.Getenv("APP_PORT"); portStr != "" {
		if p, err := strconv.Atoi(portStr); err == nil {
			port = p
		}
	}
	
	return &Config{
		Port: port,
	}
}

要更改端口,可以通过以下方式设置环境变量:

Linux/Mac:

export APP_PORT=9090
go run main.go

Windows:

set APP_PORT=9090
go run main.go

或者直接在运行命令中设置:

APP_PORT=9090 go run main.go

在生产环境中,你可以在启动脚本或容器配置中设置这个环境变量:

# Docker示例
docker run -e APP_PORT=9090 your-app

# systemd服务文件示例
[Service]
Environment="APP_PORT=9090"

如果项目使用 main.go 启动,你会看到类似这样的端口使用代码:

package main

import (
	"fmt"
	"log"
	"net"
	"your-project/config"
	"your-project/service"
)

func main() {
	cfg := config.Load()
	
	addr := fmt.Sprintf(":%d", cfg.Port)
	lis, err := net.Listen("tcp", addr)
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}
	
	server := service.NewServer()
	if err := server.Serve(lis); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}
}

检查项目的 main.go 或启动文件,确认端口配置确实通过 config.Load() 加载。如果没有找到 APP_PORT 环境变量,应用程序会回退到使用默认的 8080 端口。

回到顶部