docker lnmp 域名解析方案
问题描述
在开发测试过程中,大家经常要弄各种测试域名,通过docker-compose建立的lnmp环境,如何优雅管理域名解析呢?
只考虑docker-compose方式,不考虑docker run...,docker run可以指定--dns=xxx,或者docker默认配置中设置dns等方式处理
在docker-compose启动dnsmasq服务,并为所有服务指定固定ip,在php容器中设置dns为dnsmasq的ip,
但是docker-compose up后可以看到容器IP设置正常,但是php容器的dns仍然是默认的127.0.0.11,
不是我们指定的172.25.0.5
docker-compose.yml关键内容如下:
相关代码
version: "3"
services:
dnsmasq:
image: jpillora/dnsmasq:latest
restart: always
networks:
dnmp_net:
ipv4_address: 172.25.0.5
ports:
- "53:53"
- "5380:8080"
volumes:
- ./dnsmasq/dnsmasq.conf:/etc/dnsmasq.conf:rw
environment:
- HTTP_USER = admin
- HTTP_PASS = xxxxxx
php72:
build:
context: .
args:
PHP_VERSION: ${PHP72_VERSION}
PHP_XDEBUG: ${PHP72_XDEBUG}
PHP_SWOOLE: ${PHP72_SWOOLE}
PHP_REDIS: ${PHP72_REDIS}
REPLACE_SOURCE_LIST: ${REPLACE_SOURCE_LIST}
volumes:
- ${SOURCE_DIR}:/var/www/html/:rw
- ${PHP72_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
- ${PHP72_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
restart: always
cap_add:
- SYS_PTRACE
networks:
dnmp_net:
ipv4_address: 172.25.0.11
dns:
- 172.25.0.5
networks:
dnmp_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.25.0.0/24
问题出现的环境背景及自己尝试过哪些方法
1、进入容器修改容器的/etc/hosts
2、进入容器修改容器的/etc/resolv.conf,指向自定义的dns服务器
3、在docker-compose启动dnsmasq服务,并为所有服务指定固定ip,在php容器中设置dns为dnsmasq的ip
大家是怎么管理docker测试环境域名解析的呢?有没有科学一点的姿势0.0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一定要用ip吗?docker-compose 创建出来的容器的container_name就是主机域名。如果你用了link或者depends_on的话,还可以设置一下别名作为主机域名。容器里设置ip,吃力不讨好