1% 이해하기 시리즈/Golang

[golang 1% 이해하기] air | 실시간 코드 변경을 위한 live-reload 기능 도입하기 #1 설치하기

TLOWAC 2024. 10. 29. 14:30

 

 

🏃🏻 들어가며

Typescript 에서 프론트 / 백엔드 개발을 진행하다보면, 사용하는 라이브러리 또는 프레임워크 자체에 자동으로 변경 내역을 반영하여 서버를 재시작 해주는 기능을 기본으로 제공 해주거나 별도로 nodemon 과 같은 라이브러리를 사용하여 해당 기능을 구현할 수 있습니다.

 

예를 들면, ReactJS, NestJs, nodemon 등이 있습니다.

 

 

이번에, Go 를 학습하면서 당연하게 생각했던 기능이 없어 검색을 하는 과정에서 변경 내역을 자동으로 반영하여 서버를 재시작 해주는 기능을 제공하는 air 라는 도구를 알게 되어 실제 적용을 해보며 글을 작성하게 되었습니다.

 

이번에 제가 air (live-reloading) 글에서 정리하고자 하는 내용은 크게 2가지 입니다 .

  • #1 local 환경에서의 air 설치 및 구성
  • #2 dockerfile 작성 및 docker container 에서의 air 설치 및 구성

 


 

 local 환경에서의 air 설치 및 구성

1) air 설치하기

 go install github.com/air-verse/air@latest 

 

2)air 정상 설치 확인하기

 air -v 

 

3) 프로젝트에 air 구성하기

 air init 

 

 

air init 명령어가 정상적으로 실행되었다면, .air.toml 파일이 정상적으로 생성된것을 확인 할 수 있습니다.

( 아래의 더보기 버튼을 통해 실제 생성된 .air.toml 파일을 확인 해볼 수 있습니다. ) 

더보기

.air.toml 

root = "."
testdata_dir = "testdata"
tmp_dir = "tmp"

[build]
  args_bin = []
  bin = "./tmp/main"
  cmd = "go build -o ./tmp/main ."
  delay = 1000
  exclude_dir = ["assets", "tmp", "vendor", "testdata"]
  exclude_file = []
  exclude_regex = ["_test.go"]
  exclude_unchanged = false
  follow_symlink = false
  full_bin = ""
  include_dir = []
  include_ext = ["go", "tpl", "tmpl", "html"]
  include_file = []
  kill_delay = "0s"
  log = "build-errors.log"
  poll = false
  poll_interval = 0
  post_cmd = []
  pre_cmd = []
  rerun = false
  rerun_delay = 500
  send_interrupt = false
  stop_on_error = false

[color]
  app = ""
  build = "yellow"
  main = "magenta"
  runner = "green"
  watcher = "cyan"

[log]
  main_only = false
  silent = false
  time = false

[misc]
  clean_on_exit = false

[proxy]
  app_port = 0
  enabled = false
  proxy_port = 0

[screen]
  clear_on_rebuild = false
  keep_scroll = true

 

4) go run 대신 air 를 사용하여 서버 실행하기


 

📍마무리하며

air 를 다루는 2번째 글에서는 Dockerfile 을 정의하고, 별도의 컨테이너 중지, 코드 변경, 빌드, 재실행의 과정을 생략 할 수 있게끔 환경을 구성하는 방법을 다루어 보겠습니다 :)

 

반응형