docker部署web项目-终极版本(docker-compose和go)

目的

通过docker打包自己编写的web服务,方便部署、测试、演示。

你能get到什么

  • go的web服务
  • go语言读取json的配置文件(dev.json)
  • goweb服务启动运行,通过命令行参数,指定配置文件 --cfg
  • go语言调用redis的get和set
  • 通过url返回当前接口的调用次数,记录在redis中
  • 本地运行go web服务
  • go的web服务编译成linux平台的可执行文件
  • 通过dockerfile,打包编译go web服务,生成docker image影像
  • 通过docker方式运行go的web服务,挂在本地目录到容器内,指定本地的配置文件(容器运行app,加载外部配置文件)
  • 通过docker-compose方式,运行goweb服务和redis服务,实现容器间互通。(容器运行app,加载外部配置文件)
  • 全部代码和配置文件(git) 点我获取

docker和docker compose方式,启动go的web服务

编写web服务

main.go

通过配置文件读取redis地址,记录访问url的次数,并且返回访问次数

package main

import (
	"encoding/json"
	"flag"
	"fmt"
	"github.com/go-redis/redis/v7"
	"io"
	"io/ioutil"
	"net/http"
)

var (
	REDISCLIENT *redis.Client
	Cfg         Config
)

type Config struct {
   
	RedisAddr string
}

func ReadCfg(cfgpath string) {
   

	bytes, e := ioutil.ReadFile(cfgpath)

	if e != nil {
   
		panic(e)
	}
	c := Config{
   }
	e = json.Unmarshal(bytes, &c)

	if e != nil {
   
		panic(e)
	}
	Cfg = c
	//fmt.Println(Cfg)
	data, e := json.MarshalIndent(c, "", "")
	if e == nil {
   
		fmt.Println(string(data))
	}
}

func initRedis() {
   
	REDISCLIENT = redis.NewClient(&redis.Options{
   
		Addr:     Cfg.RedisAddr,
		Password: "", // no password set
		DB:       9,  // use default DB
	})
}
func main() {
   

	var (
		cfgpath = flag.String(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值