Docker 로 Go 프로젝트 빌드 & 실행하기
728x90
각종 VM에 go 가 설치가 안되어있다고 가정하고 도커를 사용하요 프로젝트를 실행하는 가볍게 실행하는 법입니다.
Dockerfile
# syntax=docker/dockerfile:1
FROM golang:1.16-alpine
WORKDIR /app
COPY go.mod ./
COPY go.sum ./
RUN go mod download
EXPOSE 3070
COPY ./ ./
RUN go build
CMD [ "./`go mod 의 모듈이름`" ]
go build 를 하게되면
go mod 파일의 module 이름으로 바이너리 파일이 생성됩니다. 그래서 CMD 에 저렇게 적은 것 입니다.
포트와 ip에서 주의하실점
package app
import (
"log"
"net/http"
"sms-api/logger"
"sms-api/service"
"github.com/gorilla/mux"
"github.com/joho/godotenv"
)
func Start() {
err := godotenv.Load()
if err != nil {
logger.Info("Error loading .env file")
}
router := mux.NewRouter()
sh := SmsHandlers{service.NewSmsService()}
router.HandleFunc("/status", sh.getSmsStatus).Methods(http.MethodGet)
router.HandleFunc("/", sendMessage).Methods(http.MethodPost)
router.HandleFunc("/auth", sendAuthMessage).Methods(http.MethodPost)
logger.Info("start server")
log.Fatal(http.ListenAndServe("0.0.0.0:3070", router))
}
ListendAndServe 에서 0.0.0.0 이나 127.0.0.1 이 아닌 localhost로 적어주시게 되면 EXPOST로 포트 를 열어줘도 접속이 안되는 이슈가 있습니다.
docker-compose.yml
version: "3.7"
services:
sms-api:
build:
context: .
dockerfile: Dockerfile
ports:
- "3070:3070"
volumes:
- ./:/workspace
이렇게 작성해주신뒤
docker-compose up -d
를 해주시면 정상적으로 서버가 시작되는것을 확인하실 수 있습니다.
728x90
'Go' 카테고리의 다른 글
Handling databases using gorm (0) | 2021.10.20 |
---|---|
Go interface: 대소문자 의 의미 (0) | 2021.10.20 |
Go - 삽입정렬 구현하기 (0) | 2021.10.03 |
Go - 구조화된 로그 남기기 (0) | 2021.09.24 |
Golang 으로 맛보는 TDD(테스트 주도 개발) (0) | 2021.09.15 |
댓글
이 글 공유하기
다른 글
-
Handling databases using gorm
Handling databases using gorm
2021.10.20 -
Go interface: 대소문자 의 의미
Go interface: 대소문자 의 의미
2021.10.20 -
Go - 삽입정렬 구현하기
Go - 삽입정렬 구현하기
2021.10.03 -
Go - 구조화된 로그 남기기
Go - 구조화된 로그 남기기
2021.09.24