Golang에서 도커와 간단한 API가 무엇인지 이해하려고 노력합시다.

7441 단어 godockerwebdevapi

Docker is an open source containerization platform. It enables developers to package applications into containers—standardized executable components combining application source code with the operating system (OS) libraries and dependencies required to run that code in any environment -IBM



그렇다면 컨테이너화란 무엇일까요?

Containerization is a form of virtualization where applications run in isolated user spaces, called containers, while using the same shared operating system (OS). One of the benefits of containerization is that a container is essentially a fully packaged and portable computing environment. -Citrix



그리고 또한
From Docker about container

History of Container

컴퓨팅의 역사를 이해하기 위해 서핑을 계속하십시오. 꽤 흥미 롭습니다 !!
결국 IT 및 서비스 산업에서 소프트웨어 개념의 핵심 부분이 무엇인지 질문하여 이해하는 것이 중요합니다. 왜 그래? 어때? :)

Bare metal to serverless

Overview of Servers

우리는 Linux 컨테이너와 Windows 컨테이너를 가질 수 있다는 것을 알고 있습니다.
(Apple Mac OS X 컨테이너에 대해 잘 모르겠습니다 :))

응용 프로그램 개발 경험이 약간 있는 경우 컨테이너가 미니 운영 체제이지만 작성한 코드를 실행하기 위해 특정 deps, libs 등과만 번들로 제공된다고 가정하십시오. 전체 운영 체제와 같은 컨테이너를 사용할 수 없습니다. 우리는 소프트웨어를 실행하기 위한 요구 사항에 따라 컨테이너를 구축합니다. 마지막으로 docker는 컨테이너화 플랫폼이고 docker는 유일한 컨테이너화 플랫폼이 아니며 다른 플랫폼도 있습니다 [Google it]. 그리고 다시 도커와 컨테이너는 모두 다릅니다.

어쨌든 근처에 열려 있는 모든 레스토랑을 가져오기 위한 코드를 빌드하고 실행하고 싶다고 가정해 보겠습니다(물론 코드에 대한 입력으로 장소를 제공합니다). 코드가 로컬에서 제대로 작동하면 코드를 작성할 수 있습니다. 미니 운영 체제에서 코드를 빌드하고 실행하는 방법과 같은 간단한 도커 명령을 작성할 수 있습니다.

좋아, 컨테이너와 도커에 대해 너무 많이 생각합니다. 간단한 Golang 애플리케이션을 작성하고 컨테이너화하고 실행해 보겠습니다. [git VCS와 같지만 도커 이미지를 위한 도커 허브로 푸시할 수도 있습니다].

go mod init github.com/YOUR_GITHUB_USERNAME/go-docker-example



module github.com/YOUR_GITHUB_USERNAME/go-docker-example

go 1.18



deps를 추가하는 경우에 대비하여 정리하면 되지만 이 자습서에서는 패키지를 사용하지 않습니다.

go mod tidy



package main

import (
    "fmt"
    "html"
    "log"
    "net/http"
)

func main() {
    // index handler
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
    })

    // hello handler
    http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello")
    })

    // starting the server
    log.Fatal(http.ListenAndServe(":8081", nil))
}


기본 이미지에서 미니 OS를 빌드하기 위한 명령인 Dockerfile를 작성해 보겠습니다.
Dockerfile 를 작성하면 빌드한 다음 image 를 얻고 image 를 실행하면 container 를 얻습니다.

# Let us specify base image required to for our application
# usually we specify base images to build application
# just assume that we will get linux OS with golang installed in it
# to build and run go programs
FROM golang:1.18-alpine

# all the operations we do here are linux commands only
# basically it is like just you have some linux OS,
# the things you specify here just commands to fetch source code
# and run it

# create new directory app where 
# we we build our application
RUN mkdir /app

# add everything from current source to this container
ADD . /app

# from now onwards this would be our workdire where we would
# be performing all the operations
WORKDIR /app

## let us run go mod download command to pull in any dependencies
RUN go mod download

## let us now build 
RUN go build -o main .

## start command which kicks off
## this newly created binary executable
CMD ["/app/main"]


레포: https://github.com/developer1622/go-docker-example

감사합니다, 행복한 배움. 더 많이 공유하세요!

for{ 
  unlearn
  learn
  relearn 
}

좋은 웹페이지 즐겨찾기