通过docker-compose构建kong容器服务的问题

来源:1-1 什么是api网关

我是陈校长

2023-12-23 21:31:54

老师,我通过您提供的docker-compose部署的kong容器,自己在compose文件中增加了consul容器,但是在kong.conf中设置dns_resolver的时候出现了问题。

起初,我想通过consu容器名称(consul)设置 dns_resolver=consul:8600,因为在同一network下,可以通过容器名称访问容器的服务,但是kong启动时候会报错。

https://img1.sycdn.imooc.com/climg/6586deab09213f4907610171.jpg

后来,我因为我consul容器8600端口已经映射到我本地环境,我通过设置dns_resolver=本地ip:8600,仍然报错。

https://img1.sycdn.imooc.com/climg/6586df10091fbb8516420134.jpg

再次,我通过docker-compose文件,把consul容器的ip地址固定为:172.100.100.100,再次设置dns_resolver= 172.100.100.100:8600,但启动kong容器时扔报错。

https://img1.sycdn.imooc.com/climg/6586dfb90924c94216110092.jpg

请老师帮忙解答~
谢谢

我的docker-compose内容:

version: '3'
services:
  kong-database:
    image: postgres:12
    container_name: kong-database
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=kong
      - POSTGRES_DB=kong
      - POSTGRES_PASSWORD=kong
    networks:
      kong-net:
        ipv4_address: 172.100.100.103
    volumes:
      - "db-data-kong-postgres:/var/lib/postgresql/data"
  kong-migrations:
    image: kong
    environment:
      - KONG_DATABASE=postgres
      - KONG_PG_HOST=kong-database
      - KONG_PG_PASSWORD=kong
      - KONG_CASSANDRA_CONTACT_POINTS=kong-database
    command: kong migrations bootstrap
    restart: on-failure
    networks:
      - kong-net
    depends_on:
      - kong-database
  consul:
    image: 'consul:1.15.4'
    container_name: consul
    ports:
      - 8500:8500
      - "8600:8600/udp"
    networks:
      kong-net:
        ipv4_address: 172.100.100.100
  kong:
    image: kong
    container_name: kong
    environment:
      - LC_CTYPE=en_US.UTF-8
      - LC_ALL=en_US.UTF-8
      - KONG_DATABASE=postgres
      - KONG_PG_HOST=kong-database
      - 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
      - KONG_PROXY_LISTEN=0.0.0.0:8000, 0.0.0.0:8443 ssl
      - CONSUL_HOST=consul
    volumes:
      - "./kong:/etc/kong"
    restart: on-failure
    ports:
      - 8000:8000
      - 8443:8443
      - 8001:8001
      - 8444:8444
    links:
      - kong-database:kong-database
    networks:
      kong-net:
        ipv4_address: 172.100.100.102
    depends_on:
      - kong-database
      - consul
      
  konga:
    image: pantsel/konga
    ports:
      - 1337:1337
    links:
      - kong:kong
    container_name: konga
    environment:
      - NODE_ENV=production
    networks:
      kong-net:
        ipv4_address: 172.100.100.101

 
volumes:
  db-data-kong-postgres:

networks:
  kong-net:
    driver: bridge
    ipam:
      config:
        - subnet: "172.100.100.0/24"
写回答

1回答

bobby

2023-12-25

这里最好完全按照课程的讲解方式来配置。不要使用其他的方式,这个地方我当时也试过好多次 最后按照课程的方式才成功的

0

Go开发工程师

未来3-5年企业高性能项目不可替代的语言,从基础到项目实战再到重构,真正从入门到精通

507 学习 · 577 问题

查看课程