MSA: Swagger UI로 API 문서 통합 프로세스 (2) 도커 컴포즈 파일

Letsdev·2023년 5월 27일
3
post-custom-banner

Index

1: 독립형 Swagger UI 서비스
2: 도커 컴포즈 파일
3: Rest Docs를 Open API로 정적 배포(Gradle Task)
4: Web Config(CORS) 및 Security Config


Docker Compose

도커 데스크톱을 깔아 두면 로컬에서 쉽게 도커 컴포즈와 독립형 Swagger UI 프로세스를 사용할 수 있다.

다음 파일을 원하는 곳에 docker-compose.yml이라는 이름으로 작성해 두고
(보통 원격 저장소로 같이 공유하니까 프로젝트에 포함시킨다.)

version: "3"

services:
  swagger-integrated-proto:
    image: swaggerapi/swagger-ui
    container_name: swagger-integrated-proto
    ports:
      - "8000:8080"
    restart: on-failure
    environment:
      - URLS=
        [
        {url:'http://localhost:8080/docs/openapi3.sample-service.json',name:'Test'},
        {url:'http://localhost:8081/docs/openapi3.my-subproject-a.json',name:'My Subproject A'},
        {url:'http://localhost:8082/docs/openapi3.my-subproject-b.json',name:'My Subproject B'}
        ]

도커 데스크톱을 켜 놓은 채로 터미널에서 이 명령을 실행해 주면 된다.
위 양식대로 쓴다면 8000 포트가 비어 있어야 한다.
(docker-compose.yml 파일이 있는 현재 경로에서 수행.)

docker-compose up -d

제공받는 리소스 설정

제공받는 수단은 다양하다.

Open API 문서를 모아 놓은 로컬 폴더를 Swagger UI 컨테이너와 공유하는 방법도 있고(volumes 속성), SAN, NAS, DAS 등 외부/외장 저장 공간도 활용 가능하다. Swagger UI가 각 서비스한테 정적 파일 형태로 공급받는 방법도 있다. 서비스들이 Open API 문서를 정적 파일로 배포하고 있을 때 가능하고, 이때 json을 받는다.

이번 예제는 각 서비스에 요청을 쏴서 정적 파일을 받는 방식을 택하고, 다른 제약이 없으면 이게 가장 편하다.

URLS라는 환경변수는 작성된 양식을 눈치로 참고해서, 대상이 되는 url들을 정해 주면 된다.
참고로 문서 생성에서는 yaml을 지원하긴 하는데, 스트레스 안 받으려면 json을 택하면 된다. 정적 리소스 접근에 확장자가 .json인 점을 참고하면 된다.

수정했으면 내렸다가 다시 올리면 된다.
(docker-compose.yml의 부모 폴더 이름을 바꿨으면 내리는 게 안 될 수도 있는데, 그냥 도커 데스크톱에서 알아서 이 컨테이너에 대한 휴지통 버튼을 잘 찾아 누르면 된다.)

docker-compose down
docker-compose up -d

스웨거 유아이 도커 컨테이너가 올라가 있는 캡처본. 도커 데스크톱 화면이다. 실행되고 있는 상태다.

Rest Docs를 Open API로 정적 배포(Gradle Task) >
< 독립형 Swagger UI 서비스

profile
아 성장판 쑤셔 (블로그 이전) https://letsdev.hashnode.dev
post-custom-banner

0개의 댓글