首页 > 解决方案 > 将当前本地 ip 传递给 docker-compose 中的 dnsmasq 命令

问题描述

设置

我有一个包含多个容器的设置,使用 dnsmasq 作为我的虚拟主机的名称服务器。我希望容器可以在我的本地网络中访问,因此我需要将所有请求解析为运行容器的机器的当前本地 ip(此处192.168.178.21

version: "3"

services:
  dnsmasq:
    image: andyshinn/dnsmasq
    ports:
      - 53:53/tcp
      - 53:53/udp
    cap_add:
      - NET_ADMIN
    command: [
      "--log-queries",
      "--log-facility=-",
      "--address=/.test/192.168.178.21"
    ]

  apache:
    ...

  gulp:
    ...

  nginx-proxy:
   ...

问题

当我启动 docker-compose 时,我想做的是动态地“添加”当前的 ip,在概念上就像一个变量,它获取当前的 ip:

...
"--address=/.test/current_local_ip"
...

这样,我可以在网络中的每台开发机器上使用此设置启动一个项目,并使其他人可以访问它,而无需手动更改 docker-compose 文件中的内容。感谢您的建议

标签: dockernetworkingdocker-composednsmasq

解决方案


您可以使用 .env 文件并添加

env_file=.env
environment:
  - IP_ADDR

并将命令修改为 "--address=/.test/$IP_ADDR"

或者

映射conf文件,如

    volumes:
      - .docker/dnsmasq.conf:/etc/dnsmasq.conf

推荐阅读