老师,我有两个dns_resolver的ip,访问不了consul里注册的服务,请问有什么办法可以解决呢?
这是我的dockerfile
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
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
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
- KONG_DNS_RESOLVER=127.0.0.11, 192.168.1.38:8600
restart: on-failure
ports:
- 8000:8000
- 8443:8443
- 8001:8001
- 8444:8444
- 8600:8600
links:
- kong-database:kong-database
networks:
- kong-net
depends_on:
- kong-migrations
konga:
image: pantsel/konga
ports:
- 1337:1337
links:
- kong:kong
container_name: konga
environment:
- NODE_ENV=production
volumes:
db-data-kong-postgres:
networks:
kong-net:
external: false
这是konga里面gateway/info信息
我觉得应该是dns_resolver配置导致的原因。因为如果我在dockerfile不加127.0.0.11这个docker的ip,在外界浏览器上访问不了kong的8001服务,加了的话在在上面就有两个dns了。请问老师有什么办法可以解决呢?
17
收起
正在回答 回答被采纳积分+1
2回答
爱吃apple的阿狸
2023-04-08 01:36:22
你的yml配置,有问题,kong这个服务使用的是docker的bridge网络:
networks: - kong-net
虽然你填了127.0.0.11这个默认的DNS,能找到postgres这个DB,但是你后面192.168.1.38:8600这个在容器里面怎么找得到外面的consul服务~
实际上就是你第一个DNS没问题,第二个用不了。
解决方法
第一种就是你可以再把consul也放到这个yml文件里编排,让他们在同一个network里,再把第二个DNS改成服务名。
或者第二种方式,就是你把kong这个服务的network改成host,就是docker的网络类型host,这样你的kong服务就直接使用宿主机的IP的端口了,你的DNS地址就可以直接填consul的地址了,还有database配置也要改成IP地址,就行了
我是使用第二种方式的
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星