docker lnmp 域名解析方案

发布于 2022-09-11 15:24:47 字数 1913 浏览 43 评论 0

问题描述

在开发测试过程中,大家经常要弄各种测试域名,通过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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

荆棘i 2022-09-18 15:24:47

一定要用ip吗?docker-compose 创建出来的容器的container_name就是主机域名。如果你用了link或者depends_on的话,还可以设置一下别名作为主机域名。容器里设置ip,吃力不讨好

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文