前言:
Kong 是天生的微服务网关。她的官方简介是:Kong 是一个云原生,高效,可扩展的分布式 API 网关。 自 2015 年在 github 开源后,广泛受到关注,目前已收获 1.9w+ 的 star,其核心价值在于高性能和可扩展性。
1. 数据库准备,拉取Postgresql镜像
sudo docker pull daocloud.io/library/postgres:9.6.4
备注:Postgresql不要太高,否则后面konga安装会报错
2. 构建Postgresql容器:
sudo docker run -d --name kong-db --network=mynetwork --ip 172.18.0.7 -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" -v /home/xujk/Work/Docker/Kong/db/pgdata:/var/lib/postgresql/data daocloud.io/library/postgres:9.6.4
3. 初始化数据库设置
docker run --rm --network=mynetwork -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-db" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-db" kong:latest kong migrations bootstrap
4. 创建Kong容器(v2.0.2)
docker run -d --name kong --network=mynetwork --ip 172.18.0.8 -e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=172.18.0.7" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-db" \
-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" \
-e "DNS_RESOLVER=172.18.0.16" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest
注意:
这个地方一定要设置为容器ip,不要用容器名:kong-db,否则设置dns的时候(consul),会出现很大问题,无意间解决的,应该是别名的时候,dns解析不过去
还需要提醒的是,即使你参数里有 -e "DNS_RESOLVER=172.18.0.16",但是还是需要去修改配置文件,然后把配置文件copy到容器里,才会生效
5. 容器与宿主机间拷贝文件方法:
把kong容器的配置文件拷贝出来:
docker cp kong:/etc/kong/kong.conf.default /home/xujk/Work/Docker/Kong/kong/conf
把主机文件拷贝到容器中:
docker cp /home/xujk/Work/Docker/Kong/kong/conf/kong.conf.default kong:/etc/kong/kong.conf.default
重启容器生效,或者创建容器的时候挂载,因为前期没有挂载,所以要拷贝文件
进入kong容器命令:
docker exec -it kong /bin/sh
查看已下载的Docker镜像latest具体版本:
docker image inspect (docker image名称):latest|grep -i version
docker image inspect kong:latest|grep -i version
6. 测试kong网关是否成功:
curl -i http://localhost:8001/services
curl -i http://172.18.0.8:8001/services