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