고 (Golang) | 이것만 알면

이 예약은 쿠팡 파트너스 활동의 일부이며 그에 따라 일정 수수료가 제공됩니다.

안녕하세요

킨입니다.

소개

“그것만 알면 나는 개발전문가” 시리즈입니다.

“Gin을 이용한 CRUD RESTful API 개발 4부”로 진행하겠습니다.

파트 4에서 Docker를 사용하여 RESTful API용 MongoDB 및 Redis 구성 어떻게하는지 배우다시도해 봅시다.

Part 3의 내용을 아직 공부하지 않으셨다면 아래 링크에 접속하여 순서대로 학습을 이어가시기 바랍니다.

03/02/2023 – (Go) – Go (고랑) | 이 지식으로 저는 또한 개발 전문가입니다 | Gin Part-3를 사용한 CRUD RESTful API 개발

파트 3 다운로드 코드

코드는 이전 시간에 작성된 코드를 계속합니다. 계속합시다. 아래 링크에 액세스하여 코드를 복제하고 다운로드하십시오.


https://bitbucket.org/kinstory/gin-tutorial/src/part3/

비트 버킷

bitbucket.org

Docker 설치 및 docker-compose 유틸리티 사용

Docker는 컴퓨터에서 가상 환경을 구성하기 위한 편리한 도구입니다. 아래 링크로 접속하시면 편리하게 설치하실 수 있습니다.

또한 최근 몇 년 동안 Docker Desktop에 대한 지불 신고는 Podman 또는 Rancher Desktop을 발생시킵니다.

회사에서 이 자습서를 수행하는 경우 Docker Desktop을 사용하여 다시 확인해야 합니다.

Rancher 데스크톱을 사용하고 있습니다. 그러나 Docker 엔진 사용은 동일하게 유지되므로 명령은 모두 동일합니다.

원하는 유틸리티를 설치하려면 아래 링크를 참조하십시오.

https://www.docker.com/products/docker-desktop/

Docker 데스크톱 다운로드 | 도커

Docker Desktop은 Mac, Windows 또는 Linux 운영 체제용으로 무료로 다운로드할 수 있습니다. 오늘 Docker를 시작하십시오!

www.docker.com

https://podman-desktop.io/

Podman Desktop – 컨테이너 및 Kubernetes | 포드맨 데스크톱

Podman Desktop – 컨테이너 및 Kubernetes 개발을 위한 오픈 소스 그래픽 도구

podman-desktop.io

https://rancherdesktop.io/

Rancher 데스크톱

컨테이너 관리 컨테이너 관리를 통해 이미지를 생성, 푸시 및 가져오고 컨테이너를 실행할 수 있습니다. Kubernetes와 동일한 컨테이너 런타임을 사용합니다. 푸시, 풀 또는 복사 없이 빌드 이미지를 온프레미스 워크로드에서 즉시 사용할 수 있습니다.

rancherdesktop.io

설치가 완료되면 docker ps 명령을 사용하여 Docker 엔진과 통신이 가능한지 확인합니다.

아래 스크린샷과 같이 오류 없이 내용이 보이면 설치가 완료된 것입니다.

$ docker ps


docker-compose로 MongoDB 및 Redis 구성

Docker-Compose는 Docker 명령을 YAML 형식 파일에 붙여넣는 방법입니다.

매번 긴 명령어를 입력하신다면 꼭 필요하다고 생각하실 테니 이번에는 활용해보시면 좋을 것 같습니다.

먼저 mongodb와 redis를 사용하기 위해 작성된 yaml 파일을 살펴보겠습니다.

$ touch docker-compose.yml

version: '3'
services:
  mongodb: # (1) 
    image: mongo # (2) 
    container_name: mongodb # (3)
    restart: always # (4)
    env_file: # (5)
      - ./app.env # (6)

    ports:
      - '6000:27017' # (7)
    volumes:
      - mongodb:/data/db # (8) 

  redis:
    image: redis:alpine
    container_name: redis
    ports:
      - '6379:6379'
    volumes:
      - redisDB:/data
volumes:
  mongodb: # (9)
  redisDB:

  1. mongodb는 서비스 이름을 의미합니다. Docker에서 컨테이너에 이름을 부여한다고 상상해 보십시오. 중복을 피하기 위해 자신의 이름으로 자유롭게 변경하십시오.
  2. Docker는 Docker Hub에 업로드된 이미지를 다운로드하고 구성하도록 설계되었습니다. (물론 자신만의 허브를 만들 수도 있지만 그 이야기는 이 글의 범위를 벗어나므로 기회가 되면 다루겠습니다.) mongo 이미지는 공식 mongo 이미지를 사용합니다. (이 링크를 참조하십시오. https://hub.docker.com/_/mongo)
  3. 컨테이너의 이름을 지정합니다. 서비스 이름과 동일하게 지정됩니다.
  4. 컨테이너가 종료될 때 정책을 지정합니다. 지금은 항상 다시 시작하도록 설정된 상태로 두십시오. (필요에 따라 “아니오”, “항상”, “오류 시” 등을 설정할 수 있으며 관련 정보는 https://docs.docker.com/compose/compose-file/compose-file-v3/#restart 참고하세요)
  5. 환경 변수 파일을 지정하는 설정입니다. 프로젝트에 이미 생성된 app.env 파일을 가리키도록 설정합니다.
  6. 여러 환경 변수 파일을 지정할 수 있으므로 “-“(하이픈, 대시) 기호 문자를 사용하여 목록 형식으로 작성하십시오.
  7. mongodb는 기본적으로 27017번 포트를 사용하지만 가상 환경이기도 하여 현재 우리 PC에서 사용하고 있는 포트와 겹칠 수 있습니다. 따라서 포트 6000을 통해 액세스할 수 있도록 포트 포워딩을 설정하십시오.
  8. mongodb는 가상화 환경 내의 /data/db 디렉토리에 정보를 저장합니다. (9)에서 설명한 것처럼 Docker는 볼륨 리소스를 구성하고 각 컨테이너에 이름을 할당할 수 있습니다. Volumes 섹션에 정의된 mongodb 볼륨을 /data/db에 매핑하여 데이터를 보호하고 다른 서비스와 공유할 수 있습니다.
  9. (8) (8)에서 설명한 이유로 mongodb 서비스용 볼륨을 생성합니다. 이 볼륨은 mongodb 컨테이너의 /data/db 디렉토리 경로에 마운트됩니다.

프로젝트 루트 경로에 docker-compose.yml 파일을 배치합니다. 트리 명령을 보면 다음과 같습니다.


다음으로 app.env 파일에 설정을 추가해 보겠습니다.

이전 학습에서는 Viper로 환경 변수 파일을 로드하고 적용하는 방법을 배웠습니다.

기억이 나지 않으시면 2부를 읽어주세요.

03/01/2023 – (Go) – Go (고랑) | 이 지식으로 저는 또한 개발 전문가입니다 | Gin을 사용한 CRUD RESTful API 개발 Part-2

app.env 파일에 MongoDB 및 Redis 관련 설정을 추가했습니다.

docker-compose.yml 파일을 생성할 때 mongodb 서비스에 환경 변수 파일이 등록되어 있는지 확인해야 합니다.

네가 옳아. 이것은 mongo 이미지 제공자가 미리 약속한 예약된 환경 변수 이름 및 키워드입니다.

mongo 이미지는 컨테이너 생성 시 미리 커밋된 환경 변수를 읽어 mongodb 서비스를 구성하도록 설정됩니다.

# FileName: app.env
PORT=8001
# Mongo & Redis Configuration
MONGO_INITDB_ROOT_USERNAME=root
MONGO_INITDB_ROOT_PASSWORD=password123
MONGODB_LOCAL_URI=mongodb://root:password123@localhost:6000
REDIS_URL=localhost:6379

Docker Hub에서 mongo 이미지를 찾으면 문서에서 아래와 같이 예약된 환경 변수를 확인할 수 있습니다.

(MONGODB_LOCAL_URI는 웹 어플리케이션에서 사용할 환경 변수입니다.)


mongo 이미지에서 제공하는 미리 커밋된 환경 변수(출처: https://hub.docker.com/_/mongo)

taskfile을 사용한 Docker 컨테이너 설정

그런 다음 위에서 설명한 작업 파일을 사용하여 서비스를 설정하고 종료합니다.

과제 파일이 기억나지 않으시면 아래 2부 내용을 간단히 보시고 다시 오시면 됩니다.

03/02/2023 – (Go) – Go (고랑) | 이 지식으로 저는 또한 개발 전문가입니다 | Gin Part-3를 사용한 CRUD RESTful API 개발

Takefile.yml 파일을 열고 up과 down을 더한 다음 실행하여 작동하는지 확인해 봅시다.

version: "3"

tasks:
  build:
    desc: Build the app 
    cmds:
    - GOFLAGS=-mod=mod go build -o bin/gin-tutorial cmd/main.go
    - chmod +x bin/gin-tutorial
  run:
    desc: Run builded app
    cmds:
    - bin/gin-tutorial
  dev:
    desc: Run dev app
    cmds:
    - GOFLAGS=-mod=mod go run cmd/main.go
  up:
    desc: Run mongo & redis
    cmds:
    - docker-compose up -d 
  down:
    desc: Shutdown mongo & redis
    cmds:
    - docker-compose down

–list 옵션으로 등록된 작업 목록을 확인합니다.


위아래로 번갈아 가며 작동하는지 확인하십시오.

$ task up


$ task down


맺음말

오늘은 “Gin을 이용한 CRUD RESTful API 개발” 시리즈의 4부를 진행했습니다.

Docker Compose 유틸리티를 사용하여 MongoDB 및 Redis 환경을 쉽게 구성했습니다.

이제 RESTful API의 본격적인 개발을 위한 준비 단계가 완료되었습니다. (짝짝 짝짝)

다음 경로에서 오늘의 튜토리얼 소스를 다운로드하여 검토할 수 있습니다.

아래 웹 사이트를 방문하여 Clone 버튼을 클릭하십시오.


https://bitbucket.org/kinstory/gin-tutorial/src/part4/

비트 버킷

bitbucket.org

게다가 K-IN이었다.

좋은 하루 보내세요