티스토리 뷰
간단한 웹 프로그래밍 개발 및 DockerHub 업로드
이제는 간단한 Hello World 웹 어플리케이션을 만들어 보자.
우리 예제는 go gin 을 이용하여 개발해 볼 것이다.
go module 설치
go mod init com.github.schooldevops.go.gin
go: creating new go.mod: module com.github.schooldevops.go.gin
Gin 의존성 가져오기
go get -u github.com/gin-gonic/gin
...
위와 같이 필요한 모듈을 가져왔다.
간단한 샘플 작성하기.
main.go 파일을 열어 다음 내용을 추가한다.
package main
import (
"bufio"
"net/http"
"os"
"strings"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// 헬스 체크 수행하기.
r.GET("/health", helathCheck)
// :greet 에 해당하는 path parameter 를 획득하여 인사를 반환한다.
r.GET("/hello/:greet", greeting)
r.Run()
}
func helathCheck(c *gin.Context) {
line := readFile("health")
if strings.Contains(string(line), "OK") {
c.String(http.StatusOK, string(line))
} else {
c.String(http.StatusInternalServerError, string(line))
}
}
func readFile(fileName string) string {
fo, err := os.Open("health")
if err != nil {
return ""
}
reader := bufio.NewReader(fo)
for {
line, isPrefix, err := reader.ReadLine()
if isPrefix || err != nil {
break;
} else {
return string(line)
}
}
return ""
}
func greeting(c *gin.Context) {
greet := c.Param("greet")
c.String(http.StatusOK, "Hello " + greet)
}
위 코드는 2개의 REST API 를 제공한다.
- /helath : 헬스체크 요청에 대한 응답을 수행한다.
- /hello/:greet : :greet 값을 받아서 Hello <인사> 말을 응답한다.
테스트 수행하기.
기본적으로 gin 은 8080으로 서비스가 된다.
curl http://localhost:8080/helath
OK
curl http://localhost:8080/hello/kido
Hello kido
Docker 파일 작성하기.
Dockerfile 을 생성하고 다음과 같이 작성한다.
FROM golang:1.12 AS build
WORKDIR /src/
COPY main.go /src/
COPY go.mod go.sum /src/
RUN go mod download
RUN CGO_ENABLED=0 go build -o /bin/webserver
FROM alpine:latest
COPY --from=build /bin/webserver /bin/webserver
COPY health /bin/
WORKDIR /bin/
ENTRYPOINT ["/bin/webserver"]
빌드 및 Docker hub push 하기.
빌드하기
필자의 docker hub 의 계정은 unclebae 이므로 이미지 이름을 작성할 때 unclebae/ 로 작성했다.
docker build -t unclebae/gogreet:v1.0 .
Docker login 수행하기.
docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: unclebae
Password:
Login Succeeded
푸시하기
docker push unclebae/gogreet:v1.0
The push refers to repository [docker.io/unclebae/gogreet]
5f70bf18a086: Pushed
d79e9e023899: Pushed
625f475afe8e: Pushed
cb381a32b229: Mounted from library/alpine
v1.0: digest: sha256:a96e03a55b71ea55db3186fbf5ac612593d84d582e853fce2d312801fa2bf5f3 size: 1152
위와 같이 docker hub 에 정상으로 push 되었음을 확인할 수 있다.
'Kubernetes' 카테고리의 다른 글
[Kubernetes] apiVersion 알아보기 (0) | 2022.04.18 |
---|---|
[Kubernetes] ArgoCD 01 설치 (0) | 2022.04.11 |
[Kubernetes] ArgoCD 03 디플로이 (0) | 2022.04.11 |
[Kubernetes] Pod 실습하기 (0) | 2022.04.11 |
[Kubernetes] ReplicaSet 실습 (0) | 2022.04.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Terraform
- AWS
- jenkins
- kubectl
- MySQL
- go
- mapping
- Kafka
- Spring
- declative
- Golang
- java
- jpa
- deploy
- Gorilla
- docker-compose
- springboot
- NodeSelector
- tfsec
- MongoDB
- Database
- kafka-springboot
- docker
- CI
- CD
- argocd
- gitops
- D3
- mongo
- kubernetes
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함