🏃🏻 들어가며
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
📍마무리하며
air 를 다루는 2번째 글에서는 Dockerfile 을 정의하고, 별도의 컨테이너 중지, 코드 변경, 빌드, 재실행의 과정을 생략 할 수 있게끔 환경을 구성하는 방법을 다루어 보겠습니다 :)
댓글