我需要同时使用两个容器:一个使用Tomcat,另一个使用数据库。
我创建了以下描述服务的yaml文件:
postgredb:
image: postgres
expose:
- 5432
ports:
- 5432:5432
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
tomcat:
image: tomcat
links:
- postgredb:db
ports:
- 8080:8080
启动docker-compose后,我可以看到我无法从Tomcat访问数据库,除非我检索数据库的IP地址(通过docker inspect)并在配置到DB的Tomcat连接池时使用它。
据我所知,这两个容器应该链接在一起,并且我希望在localhost的端口5432上找到数据库,否则链接容器没有什么好处。
我的理解正确吗?
2条答案
按热度按时间deikduxw1#
使用在文件中定义的别名“db”来引用数据库主机名。
链接服务的容器将可通过与别名相同的主机名访问,如果未指定别名,则可通过服务名访问。
图片来源:https://docs.docker.com/compose/compose-file/compose-file-v2/#links
brccelvz2#
对于较新版本的Docker-compose
链接是旧选项。建议改用网络。