데브옵스(DevOps)를 위한 쿠버네티스 마스터/쿠버네티스 들어가기

쿠버네티스에서 실행할 GO언어 컨테이너 작성

webmaster 2022. 7. 9. 11:22
728x90

1) vim main.go

package main

import (
    "fmt"
    "github.com/julienschmidt/httprouter"
    "net/http"
    "log"
    "os"
)

func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
    hostname, err := os.Hostname()
    if err == nil {
        fmt.Fprint(w, "Welcome! " + hostname +"\n")
    } else {
        fmt.Fprint(w, "Welcome! ERROR\n")
    }
}

func main() {
    router := httprouter.New()
    router.GET("/", Index)

    log.Fatal(http.ListenAndServe(":8080", router))
}

2) Golang 설치

sudo apt install golang #Go 설치
go get github.com/julienschmidt/httprouter #github 소스코드 가지고 오기
go build main.go #main.go 빌드
./main # 실행

3) 확인

3-1 ) 웹 미리 보기 클릭 후 8080 포트 연결

웹 미리보기 -> 8080포트 연결

3-2) 접속 확인

접속 확인

4) docker build

mkdir http_go #디렉토리 생성
mv main ./http_go/ #build한 파일을 디렉토리로 이동
cd http_go #디렉토리로 이동
vim dockerfile #도커파일 작성

dockerfile

FROM golang:1.11
WORKDIR /usr/src/app
COPY main  /usr/src/app
CMD ["/usr/src/app/main"]

docker build 

docker build -t http-go . #도커 파일 빌드
docker run -d -p 8080:8080 --rm http-go #빌드한 파일 실행
docker ps # 확인

5) dockerhub 에 올리기

docker tag http-go widn45/http-go # tag 변경
docker login # hub 계정 로그인
docker push widn45/http-go #docker push
728x90