参考
安装docker
安装docker compose
docker compose方式(不能正常运行)
创建一个docker-compose.yaml,存放到F:\project\Kong目录下
version: "3.8"volumes:kong_data: {}networks:kong-net:services:kong-database:image: postgres:14.5container_name: kong-postgresrestart: on-failurenetworks:- kong-netvolumes:- kong_data:/var/lib/postgresql/dataenvironment:POSTGRES_USER: kongPOSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-kong}POSTGRES_DB: kongports:- "5432:5432"healthcheck:test: ["CMD", "pg_isready", "-U", "kong"]interval: 30stimeout: 30sretries: 3kong-migration:image: ${KONG_DOCKER_TAG:-kong:latest}command: kong migrations bootstrapnetworks:- kong-netrestart: on-failureenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}depends_on:- kong-databasekong:image: ${KONG_DOCKER_TAG:-kong:latest}restart: on-failurenetworks:- kong-netenvironment:KONG_DATABASE: postgresKONG_PG_HOST: kong-databaseKONG_PG_DATABASE: kongKONG_PG_USER: kongKONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}KONG_PROXY_LISTEN: 0.0.0.0:8000KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443KONG_ADMIN_LISTEN: 0.0.0.0:8001depends_on:- kong-databasehealthcheck:test: ["CMD", "kong", "health"]interval: 10stimeout: 10sretries: 10ports:- "8000:8000"- "8001:8001"- "8443:8443"- "8444:8444"konga-prepare:image: pantsel/konga:latestcommand: "-c prepare -a postgres -u postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/konga"networks:- kong-netrestart: on-failuredepends_on:- kong-databasekonga:image: pantsel/konga:latestrestart: alwaysnetworks:- kong-netenvironment:DB_ADAPTER: postgresDB_URI: postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/kongaNODE_ENV: productiondepends_on:- kong-databaseports:- "1337:1337"
备注:
(1)该yml文件定义了Kong、PostgreSQL 和 Konga 三个核心组成部分
(2)kong-migration会做Kong的数据库数据初始化操作
(3)kong-prepare会做Konga的数据库数据初始化操作
(3)该yml文件支持自定义环境变量替换当中的Kong镜像名字、PostgreSQL的密码
运行以下命令进行部署
cd /root/kong/
docker-compose up -d
停止
docker-compose stop
docker-compose down
执行后不能正常运行,一直在重启.
部署完成后,访问服务器的1337端口即可看到Konga的登录注册页面,首次访问需要创建一个Admin账号,随意输入即可,但密码要大于7位字符。
通过Admin账号登录之后,需要指定Kong的Admin URL让Konga能够连接Kong。这里我们绑定的Kong Admin API端口是8001(http),8444(https,但这里我们实验环境,没有配置SSL证书,因此跳过)。
docker安装kong
创建docker网络
创建一个docker网络以便容器间可以彼此发现和通信。
如果不指定subnet, 创建network默认使用 172.17网段,也许可能跟实际网段冲突 docker network create —subnet=12.10.10.0/24 kong-net
docker network create kong-net2
查看网络信息
docker inspect kong-net2
安装postgres容器
docker run -d --name kong-database --network=kong-net2 -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" -v /kong/postgresql/data:/var/lib/postgresql/data postgres:14.5
docker run -d --name kong-database --network=kong-net2 -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" -v D:/data/docker/kong/postgresql:/var/lib/postgresql/data postgres:14.5
安装kong数据库
为了数据能够得到保存,安装一个kong数据库,并生成初期数据
docker run --rm --network=kong-net2 -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" kong:latest kong migrations bootstrap
启动kong容器
docker run -d --name kong --network=kong-net2 -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" -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 8001:8001 -p 8444:8444 kong:latest
docker run -d --name kong \--network=kong-net2 \-e "KONG_DATABASE=postgres" \-e "KONG_PG_HOST=kong-database" \-e "KONG_PG_USER=kong" \-e "KONG_PG_PASSWORD=kong" \-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \-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 8001:8001 \-p 8444:8444 \kong:latest
8000和8443分别用于对http和https的代理访问。 8001和84444分别是http和https的管理API访问端口,因为管理API不宜对外暴露,所以在挂载端口时明确了0.0.0.0,即只有宿主机本地能够访问。
pgAdmin4
docker pull dpage/pgadmin4:latest
docker run -d --name pgadmin -p 5081:80 -e PGADMIN_DEFAULT_EMAIL=longfuchu@163.com -e PGADMIN_DEFAULT_PASSWORD=123456 -e PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True -e PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10 dpage/pgadmin4:latest
| 参数 | 作用 |
|---|---|
| -d | 启动后在后台运行,不打印日志 |
| —name 容器名 | 给容器命名,方便管理,也可以不写此参数 |
| —restart always | 如果容器死掉,就自动将其拉起,也可以不写此参数 |
| -p 宿主机端口:容器内端口 | 将宿主机端口与容器内端口进行映射,postgreSQL默认的容器内端口是5432,容器外端口可以根据需要自己调整 |
| -e ‘PGADMIN_DEFAULT_EMAIL=用户名’ | 设置登陆用用户名,最好是email的格式 |
| -e ‘PGADMIN_DEFAULT_PASSWORD=密码’ | 设置登陆密码,自己记住 |
现在pgAdmin4就起来了,可以浏览器访问http://192.168.3.150:5081/login
登录后,测试连接postgreSQL是否成功
安装konga
docker pull pantsel/konga:latest
进入容器并初始化数据库
docker exec -it kong-database psql -U kong
创建数据库.注意句末的分号
CREATE DATABASE konga WITH ENCODING='UTF8';
然后输入 \q退出。(好像没创建成功,需要手工重新创建konga)
借助konga对数据库进行初始化操作。
docker run --rm pantsel/konga:latest --network=kong-net2 -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga
docker run --rm \--network=kong-net2 \pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:kong@172.18.0.1:5432/konga
172.18.0.1
注意 postgresql://kong:kong@10.0.2.59:5432/konga意为 postgresql://<用户>:<密码>@<PG_Host>:<PG_Port>/<database>
启动konga面板
docker run -d -p 1337:1337 --network=kong-net2 -e "TOKEN_SECRET=123456" -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_PASSWORD=kong" -e "DB_USER=kong" -e "DB_DATABASE=konga" -e "NODE_ENV=production" -e "DB_URI=postgresql://kong:172.19.0.1/konga" --name konga pantsel/konga:latest
或者
docker pull pgbi/kong-dashboard
docker run -d -p 8083:8080 --network=kong-net2 --name kong-dashboard pgbi/kong-dashboard start --kong-url http://kong:8001 --basic-auth kong=kong
Konga连接Kong
·
