首页 > 解决方案 > 由于动态 IP,Docker compose 无法从另一个服务访问一个服务

问题描述

我在 Windows WSL2 上运行 docker。我有以下启动 redis 的 docker compose,然后是另一个依赖于 redis 的服务( serviceA )。我需要在 serviceA 启动后运行一个脚本。该脚本需要从serviceA-cont内部访问 redis 。

version: '3.7'

services:

  redis-service:
    image: redis
    container_name: redis-cont                
    ports:
      - "6379" 
      
  serviceA:
    depends_on:
      - redis-service
    container_name: serviceA-cont    
    build:
      context: ./app
      dockerfile: Dockerfile
    command: scripts/customscript.js
    ports:
      - "8080:8080"
    stdin_open: true   
 

使用 docker network inspect,我发现 redis 服务的 IP 在每次 docker compose 构建时都在不断变化。这意味着每次运行 docker compose 时,我都必须在自定义脚本中手动更改 redis 服务的 IP。我如何以更清洁的方式处理这个问题?我尝试创建自定义网络并将其分配给每个服务,但我看到以下错误:

service "redis-service" refers to undefined network "network-name": invalid compose project

在 redis 服务上设置 network_mode:host 会引发此错误:

network mode "network-name" not supported by buildkit

标签: docker-composeserviceredisipdocker-network

解决方案


推荐阅读