realize+docker에서 Golang 핫 리셋이 있는 개발 환경 구축
컨디션
프로젝트 구조
.
├── db
│ └── db.go
├── models
│ ├── model_a.go
│ └── ...
├── schema
│ ├── schema.graphql
│ └── ...
├── server
│ └── server.go
├── docker-compose.yml
├── go.mod
├── go.sum
├── gqlgen.yml
└── ...
사용할 핫 리셋 도구
realize 도구를 사용합니다.
그 외에 fresh 등 열중장 도구도 있는데
realize
의 설정이 더 상세하기 때문에 realize
를 선택했다.사실 처음에는
fresh
에서 시도했지만 Go Modules 모드에 대응할 수 없을 것 같습니다.realize
에서 적절한 설정을 통해 대응할 수 있다.Docker file 및 docker compose.yml의 준비
상기 내용에 따라 열중량을 준비한
Dockerfile
과docker-compose.yml
.FROM golang:1.12.6-alpine
WORKDIR /app
RUN apk add --no-cache alpine-sdk git && go get -u github.com/oxequa/realize
EXPOSE 8080
CMD ["realize", "start"]
docker-compose.yml
에서 개발 환경의 디렉터리를 용기에 부속시키는 설정을 진행한다.따라서 원본을 복제하지 않고
WORKDIR
와 필요한 패키지만 설치합니다.version: '3'
services:
db:
image: mysql:5.7
ports:
- "3306"
restart: always
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
environment:
MYSQL_DATABASE: sample
MYSQL_ROOT_PASSWORD: password
volumes:
- mysql-data:/var/lib/mysql
application:
build: .
environment:
MYSQL_DATABASE: sample
MYSQL_HOST: db
MYSQL_PASSWORD: password
MYSQL_PORT: 3306
MYSQL_USER: root
depends_on:
- db
ports:
- "8095:8080"
restart: always
volumes:
- .:/app
volumes:
mysql-data:
driver: local
다음 부분에서 개발 환경의 디렉터리를 용기에 부속시키는 위치를 선택합니다.Dockerfile
의WORKDIR
와 같은 위치를 설정했는지 확인합니다. volumes:
- .:/app
realize 설정
Dockerfile
의 CMD
에서 realize start
를 실행하지만 이 명령은 단일 항목으로 프로그램을 시작하지 않습니다.우선 손 옆에서 집행
realize start
.$ go get -u github.com/oxequa/realize
# $GOPATH/binにPATHを通っていることを確認した後
$ realize start
시 생성.realize.yml
된 설정 파일입니다.적절한
go
파일을 수정하고 저장하면, 이 내용이 로그로 출력되는지 확인하고, Ctrl + C를 통해 실행을 끝냅니다.settings:
legacy:
force: false
interval: 0s
schema:
- name: sample
path: .
commands: {}
watcher:
extensions:
- go
paths:
- /
ignore:
paths:
- .git
- .realize
- vendor
응용 프로그램realize start --run
을 시작하려면 이렇게 매개 변수--run
를 주거나 수정.realize.yml
하면 다음과 같다.- commands: {}
+ commands:
+ run:
+ status: true
일반적으로 이 상태realize start
에서 프로그램이 시작되지만 Go Modules
모드에서는 오류가 발생하여 시작하지 않습니다.또한, 이번main 함수에 정의된 파일은
main.go
이 아니라server/server.go
라는 점도 특이하다.이것을 흡수하는 데 사용할 설정을 추가합니다.
commands:
+ install:
+ status: true
+ method: go build -o app.out ./server/server.go
run:
status: true
+ method: ./app.out
이렇게 하면 열중량이 유효한 상태에서 응용 프로그램이 시작됩니다.수중에 집행
realize start
하여 그 행위를 확인한다.realize
기본 재건축 프로젝트$GOPATH/bin
에서 go install
로 재건축합니다.Go Modules
모드에 존재하지 않기 때문$GOPATH
go install
에 실패했다.이런 상황을 피하기 위해
go install
이 아닌 사용go build -o app.out ./server/server.go
으로 설정하고 가동 시 이 성과를 이용하여 가동한다.docker-compose로 시작
여기까지 할 수 있다면 이후
docker-compose
에만 작동할 것이다.docker-compose build
docker-compose up -d
참고 자료
Reference
이 문제에 관하여(realize+docker에서 Golang 핫 리셋이 있는 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/h_sakano/articles/b38336d99f43e4e9e90b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)