Utopiops를 사용하여 Dockerized Go - gin API 빌드, 배포 및 호스팅(DevOps 경험 필요 없음)

7588 단어 nodevopscloudgodocker
소프트웨어 개발자 또는 소프트웨어 개발 팀으로서 가장 중요한 것은 양질의 소프트웨어를 구축하고, 이를 제공하고, 고객으로부터 피드백을 받는 것입니다.

일반적으로 팀은 DevOps 엔지니어 또는 개발자의 DevOps 전문 지식에 의존하여 매우 시간 소모적이고 실망스럽고 비용이 많이 드는 플랫폼을 구축해야 합니다.

Utopiops (utopiops.com)은 애플리케이션의 구축, 배포 및 호스팅에서 플랫폼 모니터링, 사고 보고서 및 DevOps 경험이 없는 문제 추적 시스템.

Utopiops는 또한 완전 관리형 및 관리형 응용 프로그램/서비스를 지원합니다. 완전 관리형 애플리케이션은 Utopiops 클라우드 플랫폼에서 호스팅되는 반면 관리형 애플리케이션은 자체 클라우드 계정에서 호스팅됩니다.

그의 게시물에서는 Utopiops에서 완전 관리형 애플리케이션을 사용하여 애플리케이션을 호스팅하는 방법을 보여줍니다. 이 튜토리얼에서는 Utopiops가 모든 계정에 기본적으로 제공하는 취미 플랜을 사용하며 신용 카드가 필요하지 않습니다.

이를 위해 2단계 Dockerfile과 함께 gin 프레임워크를 사용하여 간단한 go API를 구현했습니다.
go mod init <module name> 명령을 사용하여 모듈을 초기화하는 것으로 시작해 보겠습니다.

go mod init go-gin-utopiops-example 


다음으로 main.go 파일에서 매우 기본적인 API를 구현합니다.

package main

import (
    "os"

    "github.com/gin-gonic/gin"
)

func main() {
    port := os.Getenv("PORT")
    if port == "" {
        port = "8080"
    }

    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })

    // A publicly open (no authorization) endpoint to verify the health of the application
    // Here it always returns 200, but in real cases it should properly indicate if the application is actually healthy or not
    r.GET("/health", func(c *gin.Context) {
        c.String(200, "Healthy")
    })

    r.Run(":" + port)
}


API에는 두 개의 GET 엔드포인트가 있습니다.
  • /ping 단순히 json 데이터로 응답
  • /health 나중에 애플리케이션의 상태 확인 끝점으로 사용됩니다
  • .

    그리고 이것은 내 Dockerfile입니다.

    FROM golang:1.16-alpine AS build
    
    WORKDIR /app
    
    COPY go.mod ./
    COPY go.sum ./
    RUN go mod download
    
    COPY . .
    
    RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o example .
    
    FROM alpine:3.9.5
    RUN apk --no-cache add ca-certificates
    WORKDIR /root/
    COPY --from=build /app/example .
    
    CMD [ "./example" ]
    


    또한 내 저장소에 항상 .dockerignore 파일이 있으므로 불필요하거나 원치 않는 파일로 도커 이미지가 부풀려지는 것을 방지합니다.

    이 모든 파일은 저장소here에서 찾을 수 있습니다.

    배포를 시작하기 전에 이메일을 등록하고 확인하여 Utopiops에 계정을 생성해야 합니다.

    이제 dockerized 애플리케이션을 생성합니다.



    그런 다음 코드를 저장한 저장소를 선택합니다.

    Screen Shot 2022-01-31 at 3.02.35 pm.png

    이 예제에서는 Github를 사용하고 있지만 Gitlab 및 Bitbucket도 사용할 수 있습니다.

    마지막으로 애플리케이션에 이름을 지정하고, git 분기, 애플리케이션이 수신 대기 중인 포트 및 상태 확인으로 사용할 수 있는 엔드포인트를 설정하면 됩니다. 상태 확인 경로는 승인되지 않은 HTTP GET 요청에 대해 2xx 응답을 반환하는 끝점일 뿐입니다.
    또한 PORT를 환경 변수로 설정합니다.



    즉시 Utopiops의 내장 CICD가 설정되고 애플리케이션 빌드 및 배포가 시작됩니다.

    Screen Shot 2022-01-31 at 3.06.08 pm.png

    빌드 로그가 발생하는 대로 실시간으로 볼 수 있습니다.



    그리고 단 몇 초 만에 응용 프로그램을 사용할 수 있습니다(이 예에서는 정확하게 3초가 소요됨)



    기본적으로 HTTPS는 응용 프로그램에 제공되며 인증서가 적용되는 데 몇 분 정도 걸립니다. 이를 몇 초로 줄이기 위해 노력하고 있습니다.



    언급할 가치가 있는 것은 대상 브랜치를 변경할 때마다 애플리케이션의 새 버전이 즉시 빌드 및 배포된다는 점입니다.


    최종 메모



    우리는 큰 목표를 염두에 두고 있는 아주 어린 스타트업입니다. 우리의 기능과 여정에 대해 알게 되는 첫 번째 사용자의 일부가 될 수 있습니다.

    저희 discord channel에 가입하고 에서 저희를 팔로우하고 저희 서비스를 이용하여 저희 가족이 되십시오. 우리는 관대 한 취미 계획이 있습니다!

    질문이 있거나 비공개 데모를 보고 싶다면 댓글을 남겨주세요!

    좋은 웹페이지 즐겨찾기