일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 도커
- GIT
- map()
- docker
- 자바
- 스프링 클라우드
- date
- 스프링부트
- SpringBoot
- Spring
- leetcode
- OAuth
- IntelliJ
- 자바스크립트
- Spring Cloud
- 스프링
- EUREKA
- JS
- spring security
- gitlab
- JavaScript
- 프로그래머스
- 유레카
- jQuery
- STS
- 코딩테스트
- Java
- spring boot
- 비동기
- map
- Today
- Total
RATSENO
KONG API GATEWAY 설치 (Docker for window) 본문
오픈소스인 KONG API GATEWAY를 공부하기 위해서 셋팅하는 도중, 설치부터 막혀버렸습니다.
해결하는데 하루가 걸리더군요 ㅠㅠ... 도커 자체도 미숙한지라 설치하는데 어려움을 겪었습니다.
자세한 원리는 생략하고 문제와 해결했던 방법을 남겨놓으려 합니다.
한글로 된 자료가 거의 전무하기 때문에, KONG 공식 홈페이지로 들어갑니다.
다양한 방법으로 설치가 가능하다고 목록이 나옵니다. 저는 window를 사용하고 도커도 깔려있기 때문에 도커로
설치 해보겠습니다.
https://docs.konghq.com/install/docker/?_ga=2.136868408.981421771.1596608925-355120519.1581990881
DB가 포함되어(With a Database)있는 방법과, DB 없이(DB-less mode) 설치하는 방법이 있습니다.
저는 DB없이 설치하는 방법을 따라했습니다.
도커를 이용하여 설치할것입니다.(window 10에서 진행하였습니다.)
도커 컨테이너 간에 서로 발견하고 통신을 하기 위해서 네트워크를 만들어야 합니다. 이름은 상관없습니다.
문서에 따라서 kong-net으로 정하고 만들겠습니다.
윈도우10에 내장되어있는 Windows PowerShell ISE를 관리자 권한으로 실행합니다.
docker network create kong-net
그 다음 KONG API GATEWAY의 설정 파일을 담아둘 docker volume를 생성하겠습니다.
docker volume create kong-vol
생성된 kong-vol이라는 이름을 가진 docker volum에 대한 상세 정보를 보겠습니다.
docker volume inspect kong-vol
[
{
"CreatedAt": "2019-05-28T12:40:09Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/kong-vol/_data",
"Name": "kong-vol",
"Options": {},
"Scope": "local"
}
]
이 볼륨과 도커 컨테이너의 지정폴더를 맵핑되고, 볼륨안에 있는 kong.yml 이라는 설정파일을 통해 도커가 KONG API GATEWAY를 실행 할수 있어야 하는데.
여기서 부터 난관에 봉착하였습니다. 굵게 표시되어있는 "Mountpoint"로 되어있는 경로를 window에서 찾을수 가 없었습니다.
당연히 window상의 경로로만 알고있었고, 도커, 도커 볼륨에 대한 경험과 지식이 부족했습니다.
저 경로는 window10의 hyper-v(가상머신)를 통해 띄워진 host의 경로입니다.
(제가 이해한것은 이것입니다 잘못된 부분이라면 말씀해주세요..!!!!!)
그 host를 통해 도커가 떠있는 것이죠. 그래서 아무리 찾아도 저 경로를 찾을수 없었습니다.
저 경로에 KONG API GATE를 도커 컨테이너로 띄우기 위한 설정파일
kong.yml
https://docs.konghq.com/2.1.x/db-less-and-declarative-config/#the-declarative-configuration-format
을 집어 넣어야 하는데 넣을수가 없었습니다...
그래서 우여곡절 끝에 찾아냈습니다.(맞는 방법인지 모르겠지만 ㅠㅠ
간단하게 말하면 실제 host(window)의 볼륨을 사용하는 것입니다.
먼저 docker desktop의 setting을 열어줍니다.
다음으로 Resources > FILE SHARING을 클릭합니다.
Resources의 몇몇 탭들은 window, mac에서만 보인다고 합니다.(가상화로 생성된 도커이기 때문에..)
경로 및 폴더는 임의로 지정해 줍니다. kong.yml 설정파일을 저장해둘 폴더를 생성하여 등록합니다.
이제 저 폴더와 KONG API GATEWAY가 실행될 도커컨테이너의 폴더를 맵핑하고 실행하기만 하면 됩니다.
$ docker run -d --name kong \
--network=kong-net \
-v "kong-vol:/usr/local/kong/declarative" \
-e "KONG_DATABASE=off" \
-e "KONG_DECLARATIVE_CONFIG=/usr/local/kong/declarative/kong.yml" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 127.0.0.1:8001:8001 \
-p 127.0.0.1:8444:8444 \
kong:latest
위의 명령어는 guid상에 나와있는 명령어 입니다. 여기서 변경해야할 부분은 -v 명령어 뒤의 부분입니다.
kong-vol은 초반에 사용하려 만들었던 도커 볼륨이며, 뒤의 /usr/local/kong/declarative폴더를 공유하는 내용입니다.
저는 kong-vol대신 위에서 만들어둔 host의 경로를 적용하겠습니다.
$ docker run -d --name kong \
--network=kong-net \
-v "/c/ProgramData/Docker/volumes/kong-vol/_data:/usr/local/kong/declarative" \
-e "KONG_DATABASE=off" \
-e "KONG_DECLARATIVE_CONFIG=/usr/local/kong/declarative/kong.yml" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 127.0.0.1:8001:8001 \
-p 127.0.0.1:8444:8444 \
kong:latest
성공적으로 run이 되고.
powershell 대신 git bash가 있다면 git bash를 이용하여 curl명령어로 응답을 확인해봅니다.
응답을 확인할 수 있습니다.
용어나 개념에 대한 설명이 많이 부족하고, 틀렸을것 같습니다.
해결했던 내용을 공유하기 위한 포스팅이니 많은 양해 부탁드리겠습니다.
감사합니다.
참고 및 출처
https://docs.docker.com/storage/volumes/
https://docs.docker.com/docker-for-windows/#resources
https://jungwoon.github.io/docker/2019/01/13/Docker-3/
'DEV > DevOps' 카테고리의 다른 글
[docker]redis 설치하기 (0) | 2020.09.17 |
---|---|
[Docker]도커 프라이빗 레지스트리 구성 후 이미지 파일 올리기. (1) | 2020.08.31 |
[Docker]간단 명령어 정리 (0) | 2020.08.18 |
[Linux]su, sudo 명령어 차이 (0) | 2020.01.03 |
[Docker]윈도우에서 postgresql 설치 후 접속 시 권한 문제 (0) | 2020.01.03 |