我正在使用docker compose创建一个我使用asp.net core,postgres和redis创建的Web应用程序。我已经完成了使用docker-compose.yml文件中指定的服务名称连接到postgres的所有内容。当试图用redis做同样的事情时,我得到一个例外。经过研究后发现这个异常是一个已知问题,并且解决方法是使用机器的IP地址而不是主机名。但是我无法弄清楚如何从compose文件中获取redis服务的ipaddress。有没有办法做到这一点?
这是撰写文件
version: "3"
services:
postgres:
image: 'postgres:9.5'
env_file:
- '.env'
volumes:
- 'postgres:/var/lib/postgresql/data'
ports:
- '5433:5432'
redis:
image: 'redis:3.0-alpine'
command: redis-server --requirepass devpassword
volumes:
- 'redis:/var/lib/redis/data'
ports:
- '6378:6379'
web:
build: .
env_file:
- '.env'
ports:
- "8000:80"
volumes:
- './src/edb/Controllers:/app/Controllers'
- './src/edb/Views:/app/Views'
- './src/edb/wwwroot:/app/wwwroot'
- './src/edb/Lib:/app/Lib'
volumes:
postgres:
redis:
答案 0 :(得分:0)
好的,我找到了答案。这是我尝试过的,但没有意识到每次重新启动容器时地址都可能会改变。
运行docker ps
以获取正在运行的contianers的列表,然后复制容器的id并运行docker inspect {container_id}
,这将输出您可以从其他正在运行的容器中访问它的ipaddress。 / p>
我感到困惑的原因是因为当容器启动时该地址可能会改变。所以我必须猜测在启动容器之前ip地址是什么。幸运的是,经过5次我猜对了。