Go언어

[golang] WSL Docker와 연동하여 Application 개발하기

아무일도없었다 2024. 10. 16. 23:38

들어가기에 앞서


본 포스팅은 Jetbrains의 GoLand라는 개발툴을 사용합니다.
VSCode 또는 기타 개발 IDE를 사용하는 환경에는 본 포스팅의 내용과 일치하지 않을 수 있습니다.

 

 

준비물


1. Goland 설치

2. WSL 설치

3. WSL에 Docker 설치

 

위의 환경이 준비되어있지 않다면 아래 포스팅을 참고.

 

Go 환경 변수 및 버전 관리하기 (GOROOT, GOPATH)

 

[GO언어] Go 환경 변수 및 버전 관리하기 (GOROOT, GOPATH)

[이 포스팅은 Windows 환경을 기준으로 작성하였습니다.] GoLand 설치 이후 개발을 진행하던 도중 환경변수가 꼬이는 탓에 엄청난 삽질을 하고 결국 싹 밀고 다시 정리해서 해결하였다. 이 글을 통해

hackerpark.tistory.com

 

WSL 간단 설치 방법

 

[Windows] 단일 명령 한줄로 WSL2 + Ubuntu 통합 설치하기

WSL(Windows Subsystem for Linux) 은 Windows 컴퓨터에서 동시에 Windows 와 Linux 를 사용할 수 있는 기능이다. 공식적으로는 WSL 을 사용하여 Linux 배포판(Ubuntu, OpenSUSE, Kali, Debian, Arch Linux 등) 을 설치할 수 있으

hackerpark.tistory.com

 

WSL Docker 서버 구축하기 (Docker Desktop 아님)

 

[Docker] WSL에서 Docker 설치하기 (Docker Desktop 아님)

들어가기에 앞서 현재 Windows 환경에 WSL이 설치되어있지 않다면 아래 포스팅을 참고하기 바랍니다.WSL 간단 설치 방법 [Windows] 단일 명령 한줄로 WSL2 + Ubuntu 통합 설치하기WSL(Windows Subsystem for Linux)

hackerpark.tistory.com

 

WSL과 Docker를 설치했다면 이미 개발의 절반이 끝난 것과 다름없다. (시작이 반이다.)

 


 

1. Project 생성 (main.go는 알잘딱)

새로운 Project 생성

 

2. 오른쪽 하단의 Terminal을 통해 go mod 생성 및 초기화

> go mod init main
go: creating new go.mod: module main
go: to add module requirements and sums:
        go mod tidy
> go mod tidy

 

3. Dockerfile 생성 및 작성

잡학지식

아래의 Dockerfile 내용을 똑같이 따라 할 필요는 없다.

하지만 아래 Dockerfile 내용을 이해한다면 충분히 도움이 될 거라고 믿는다.

필자는 보통 Dockerfile에 두개 이상의 FROM을 사용하는 Multi-stage를 자주 활용한다.
(Multi-stage가 궁금한 사람은 구글링을 하면 바로 나온다.)

또한 go mod download를 앞에 두면 go mod download를 캐싱할 수 있어서 단순 코드만 수정되는 경우 빠르게 빌드가 가능하다.

Dockerfile에 대해 궁금하다면 아래 포스팅 내용 참고

Dockerfile의 구조와 문법 (hackerpark)

 

ARG GOVERSION=1.22
FROM golang:${GOVERSION}-alpine as builder

ADD go.mod /project/
WORKDIR /project

RUN go mod download

COPY . /project

RUN go build -o go_lab -buildvcs=false

FROM alpine:3.16

RUN apk --no-cache add libc6-compat gcompat tzdata && \
    rm -rf /var/cache/apk/*

RUN cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
    echo "Asia/Seoul" > /etc/timezone

RUN addgroup -S hackerpark && adduser -S hackerpark -G hackerpark
USER hackerpark

COPY --from=builder /project/go_lab /go_lab

ENTRYPOINT ["/go_lab"]

 

Dockerfile

 

 

4. 오른쪽 상단의 Add Configuration > Edit Configurations 선택

build 환경 설정

5. Docker > Dockerfile 선택

 

Dockerfile이 자동으로 선택된다.

 

필자가 설정한 내용

위의 내용은 다음과 같다.

Name dockerifle을 사용하여 build를 진행할 설정의 이름
Server Image를 생성할 Docker Server
Dockerfile build시 사용할 Dockerfile 파일
Image tag Dockerfile을 사용하여 만들 Image:Tag 설정
Container name Dockerfile을 사용하여 만들어진 Image를 실행할 Container 이름
(설정안하면 랜덤으로 생성되며 Modify options > Run built image 를 해제하면 Container는 실행하지 않고 image만 생성된다.)

 

 

6. WSL Docker Server와 연동 (위의 Server 오른쪽 ... 을 선택한 후 WSL에 생성한 Docker 서버와 연동하면 된다.)

Connection successful 확인

 

Connection successful이 나오는지 확인 후 OK를 누른다.

 

build 설정 완료

 

7. Build 및 Container 실행

 

RUN 버튼 (재생버튼)

 

설정 완료 후 오른쪽에 활성화된 RUN 버튼을 누르면 아래와 같이 Image가 만들어지고 Container가 실행된다.

 

Build 중...

 

생성된 Image와 실행된 Container

 

+ 추가

build Configurations의 오른쪽 상단 Store as project file을 체크하면 아래와 같이 나오는데 이를 git에 저장하여 다른 개발자 또는 환경에서 사용할 수 있다.

 

설정 내용을 파일로 저장

 

 

Happy Develop

 

반응형