使用docker-compose安装kong网关
摘要:本文介绍了使用Docker Compose部署Kong API网关的完整流程。首先需要准备Linux环境并安装Docker和Docker Compose,然后创建Docker网络,配置PostgreSQL数据库,创建Kong和Konga数据库用户。接着通过Docker运行命令初始化数据库,最后使用完整的docker-compose.yml文件启动Kong网关和Konga管理界面。文章还提供了
·
使用docker compose 安装组件,迁移到生产和维护起来都更简单,以下是安装步骤:
A. 前置条件:
1. linux机器
2. 已安装了docker和docker-compose
B. 步骤:
1.创建网络
docker network create kong-net
2.安装数据库,使用docker-compose
version: "3.8"
networks:
kong-net:
external: true
services:
postgres:
image: postgres:9.6.24
container_name: cjb_postgres
hostname: cjb_postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
networks:
- kong-net
ports:
- 5432:5432
volumes:
- /root/PostgreSQL/data:/var/lib/postgresql/data
这里要指定hostname, 以便后面访问数据库时能通过cjb_postgres找到
4. 创建数据库用户kong 和 konga
CREATE ROLE "kong" login ENCRYPTED PASSWORD 'kong' SUPERUSER CREATEDB NOINHERIT;
CREATE ROLE "konga" login ENCRYPTED PASSWORD 'konga' SUPERUSER CREATEDB NOINHERIT;
5. 初始化数据库kong(一次性,直接用docker run即可)
sudo docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=cjb_postgres" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:2.3 kong migrations bootstrap
6. 初始化UI数据库konga(一次性)
sudo docker run --rm --network=kong-net \
10.0.18.191:5000/yongan/konga:latest \
-c prepare \
-a postgres \
-u postgres://konga:konga@cjb_postgres:5432/konga
7. 运行【完整docker-compose文件】
version: "3.8"
networks:
kong-net:
external: true
services:
kong-database:
image: postgres:9.6.24
container_name: cjb_postgres
hostname: cjb_postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
networks:
- kong-net
ports:
- 5432:5432
volumes:
- /root/PostgreSQL/data:/var/lib/postgresql/data
kong:
image: kong:2.3
container_name: kong
hostname: kong
depends_on:
- kong-database
restart: unless-stopped
environment:
KONG_DATABASE: postgres
KONG_PG_HOST: cjb_postgres
KONG_PG_USER: kong
KONG_PG_PASSWORD: kong
KONG_PROXY_ACCESS_LOG: /dev/stdout
KONG_ADMIN_ACCESS_LOG: /dev/stdout
KONG_PROXY_ERROR_LOG: /dev/stderr
KONG_ADMIN_ERROR_LOG: /dev/stderr
KONG_ADMIN_LISTEN: 0.0.0.0:8001, 0.0.0.0:8444 ssl
networks:
- kong-net
ports:
- 8000:8000 # proxy http
- 8443:8443 # proxy https
- 8001:8001 # admin api http
- 8444:8444 # admin api https
konga:
image: pantsel/konga:latest
container_name: konga
restart: unless-stopped
networks:
- kong-net
ports:
- 1337:1337
environment:
DB_ADAPTER: postgres
DB_URI: postgres://konga:konga@cjb_postgres:5432/konga
NODE_ENV: production
DB_PASSWORD: konga
C. 可能遇到的问题:
1. docker pull国内无法下载:
Solve: 新增或编辑/etc/docker/daemon.json
{"registry-mirrors": ["https://docker-0.unsee.tech","https://docker-cf.registry.cyou","https://docker.1panel.live"]}
(这几个源目前是可用的,如果失效了可以到这里找其他源: https://github.com/dongyubin/DockerHub)
重启docker
sudo systemctl daemon-reload #重启daemon进程
sudo systemctl restart docker #重启docker
sudo docker info # 查看生效情况
2. docker run --rm 时,本地找不到镜像,从官方拉取失败:
Solve: 先使用docker pull将需要运行的镜像拉下来,然后再docker run
更多推荐
所有评论(0)