Docker部署Golang Http服務

前言

最近在工作中有這麼一個需求:由於某個服務只在生產環境下部署,測試環境下沒有相關服務,但是本地無法訪問生產環境的服務,所以我需要mock一個返回特定json的http服務。

服務代碼

相關代碼已經上傳至GitHub:https://github.com/bodhiye/http-fake

main.go代碼

package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

type fakeReq struct {
	URI string `json:"uri"`
}

// 處理application/json類型的POST請求
func fake(w http.ResponseWriter, r *http.Request) {
	// 根據請求body創建一個json解析器實例
	decoder := json.NewDecoder(r.Body)
	// 用於存放參數數據
	var req fakeReq
	// 解析參數 存入map
    decoder.Decode(&req)
    // 打印日誌
	fmt.Printf("url=%s\n", req.URI)

    // 返回你需要的json,這裏返回了{"code": 200}
	fmt.Fprintf(w, `{"code": 200}`)
}

func main() {
	http.HandleFunc("/fake", fake)
	http.ListenAndServe(":2333", nil)
}

Dockerfile代碼

FROM golang:latest
MAINTAINER "[email protected]"
WORKDIR /go/src/http-fake
ADD . /go/src/http-fake
RUN go build .
EXPOSE 2333
ENTRYPOINT ["./http-fake"]

部署流程

  1. 編譯Dockerfile文件:docker build -t bodhiye/http-fake .編譯完成後在終端輸入docker images可以查看剛纔編譯好的http-fake鏡像。
  2. 你得註冊一個Docker Hub賬號,註冊成功後登錄Docker Hub:docker login -u bodhiye,之後輸入密碼即可登錄成功。
  3. 把鏡像上傳到Docker Hub:docker push bodhiye/http-fake上傳成功後可以在Docker Hub網站上看到剛剛上傳的http-fake鏡像。
  4. 在你需要部署的服務器或者本地環境下拉取鏡像:docker pull bodhiye/http-fake:latest代碼中latest表示拉取最新的鏡像版本。
  5. 啓動http-fake服務:docker run --name test-http -d -p 2048:2333 bodhiye/http-fake將容器服務內部的2333端口映射到本機的2048端口上,並給該容器服務起了一個my-test-http名稱。
  6. 測試http-fake服務:curl -X POST -d '{"uri":"https://img.yeqiongzhou.com/test.jpg"}' 127.0.0.1:2048/fake通過curl的方式來訪問本地的http-fake服務,可以看到該服務返回了預期的json字段。如果要在本地訪問服務器上的該服務,則127.0.0.1替換成服務器的IP地址。
  7. 查看日誌:docker logs test-http可以打印出服務相關日誌url=https://img.yeqiongzhou.com/test.jpg
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章