이 실습은 '도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문(위키북스)' 를 공부하면서 작성한 글입니다
main.go 라는 파일에 다음 코드를 작성
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
log.Println("received request")
fmt.Fprintf(w, "Hello Docker!!")
})
log.Println("start server")
server := &http.Server{Addr: ":8080"}
if err := server.ListenAndServe(); err != nil {
log.Println(err)
}
}
해당 코드를 간단히 설명하면
모든 http 요청에 "Hello Docker!!"라는 응답을 보내고, 서버포트는 8080, 요청을 받은 경우 로그로 "received request"라는 로그를 찍게되어있음.
이 다음 같은 디렉토리(같은 경로) 에 Dockerfile이라는 파일명으로 다음과 같이 작성함
FROM golang:1.9
RUN mkdir /echo
COPY main.go /echo
CMD ["go", "run", "/echo/main.go"]
해당 내용을 간단히 설명하면,
[FROM]
FROM 인스트럭션은 도커 이미지의 바탕이 될 베이스 이미지를 지정. 즉 Dockerfile로 이미지 빌드 시, FROM 에 지정된 이미지를 다운받음.
기본적으로 해당 이미지는 도커 허브(Docker Hub)라는 곳에 공개 되어잇음.
main.go를 실행하기 위해서는 Go언어의 런타임이 설치된 이미지가 필요하고 우리는 golang 1.9 태그(버전)을 사용할거임
[RUN]
도커 이미지를 생성할때 컨테이너 안에서 실행할 명령어를 정의함.
여기서는 컨테이너 안에서 echo라는 디렉토리를 만들었음
[COPY]
도커가 동작 중인 호스트 머신의 파일이나 디렉터리를 컨테이너 안으로 복사하는 명령어임
여기서는 main.go를 ehco디렉토리를 옮겼음
[CMD]
도커 컨테이너를 실행할 때 컨테이너 안에서 실행할 프로세스를 지정한다. 즉 RUN은 이미지를 빌드할때 실행(애플리케이션 업데이트 및 적재)되고, CMD는 컨테이너를 시작할때 실행(애플리케이션 자체 실행)된다.
go run /echo/main.go
랑 같은 의미임.
이다음에 할 것은 도커 이미지를 빌드하는 것
명령어는 아래와 같다
docker image build -t 이미지명[:태그명] Dockerfile의_경로
docker image build -t test3/echo:latest .
해석하면 이미지명 test3/echo (test3은 네임스페이스로서 생략가능)이며 태그명은 latest 경로는 현재경로( .) 지정하여 실행함
완료 후 docker image ls 로 확인해보자
끝
'Platform > Docker' 카테고리의 다른 글
(도커실습4) 도커 컨테이너를 실행해보자아아아아아 (0) | 2022.03.27 |
---|---|
(도커실습2) 도커(docker)이미지를 다운 , 실행 및 정지 하기 (0) | 2022.03.07 |
(도커실습1) Windows 10 or 11 에 Docker 을 설치해보자 (0) | 2022.03.06 |