docker composer到本地主机的网关

docker composer到本地主机的网关,docker,docker-compose,Docker,Docker Compose,我在本地机器上运行redis隧道。我希望我的容器连接到我的本地机器,然后连接到redis隧道,以便我的redis凭据保留在本地 这是我的docker-compose.yml version: '3.8' services: front: container_name: front_fr build: context: docker volumes: - ".:/var/www/front:rw,cached"

我在本地机器上运行redis隧道。我希望我的容器连接到我的本地机器,然后连接到redis隧道,以便我的redis凭据保留在本地

这是我的docker-compose.yml

version: '3.8'

services:

      front:
    container_name: front_fr
    build:
      context: docker
    volumes:
      - ".:/var/www/front:rw,cached"
    environment:
      - APPLICATION_ENV=dev
    ports:
      - "443:443"
      - "6379:6379"
    extra_hosts:                                                                                                                                                                            
      - "redis.XXXX.amazonaws.com:172.23.0.1"                                                                            
      
这个很好用。但我必须在容器上安装iproute 2,并运行ip route以获取路由(172.23.0.1),然后将其添加到额外的_主机:

   docker exec e09f640bfd0d apt-get install -y iproute2                                                                                             
   docker exec e09f640bfd0d ip route   
是否有一种方法可以自动添加网关,而无需手动执行这些步骤


谢谢。

只需使用所有docker compose命令创建一个shell脚本即可

docker-compose build
docker-compose run front apt-get install -y iproute2  
docker-compose run front ip route 
docker-compose up

如果您拥有此服务的docker文件,则可以将这些步骤添加到单独的脚本中,并将其设置为入口点(参考)


如果您愿意覆盖此图像的现有入口点,也可以在docker-compose.yml(参考)中完成此操作。

听起来不错。但是如何在docker compose中动态更改网关的IP呢。yml文件?如何将值172.23.0.1动态替换为“ip路由”将返回的值?extra_hosts只是向容器的/etc/hosts文件添加条目的一种方便方法。因为您是在容器运行后获取IP地址的;更新docker compose没有意义。yml。您可以使用ENTRYPOINT脚本直接将IP条目添加到容器的/etc/hosts文件中。谢谢。我在这里找到了一些关于将额外配置添加到/etc/hosts的信息。我最后把它添加到docker-compose.yml:command:bash-c'echo
iproute show default | grep-E-o”([0-9]{1,3}[\.]){3}[0-9]{1,3}“
“example.com”>/tmp/hosts\u extra&&cat/tmp/hosts\u extra>/etc/hosts的注释与第一个答案相同。听起来不错。但是如何在docker compose中动态更改网关的IP呢。yml文件?如何将值172.23.0.1动态替换为“ip路由”将返回的值?