问题使用Docker-compose链接Docker中的容器

我正在使用Docker来准备我的微服务架构。 我正在尝试使用docker-compose将一个容器与另一个容器链接起来。

基本上我有一个postgressql图像的容器,以及一个用Spring开发的java微服务,它应该连接到数据库容器。

所以我在docker-compose.yml中设置了一个链接,并使用以下命令将db容器ip作为“db”引用:

- "JAVA_OPTS=-Dpostgres.host=db"

不过,我得到以下错误docker开始微服务:

引起:java.lang.IllegalArgumentException:无法parsing值“jdbc:postgresql:// $ {postgress.host}:5432 / docker”中的占位符“postgress.host”

所以基本上这个占位符不能解决,但通常docker组成应该照顾设置这个系统variables指向db容器的IP地址吗?

我做错了什么?

在涉及的文件下面:

泊坞窗,compose.yml:

  version: "2" services: microservices: build: ./microservices container_name: microservices links: - db - consul environment: - "JAVA_OPTS=-Dpostgres.host=db" consul: image: consul container_name: consul ports: - "8500:8500" db: image: postgres container_name: local-postgres9.6 ports: - "5432:5432" environment: POSTGRES_PASSWORD: docker POSTGRES_USER: docker 

application.yml的微服务:

  server: port: 8081 project: jdbc: url: jdbc:postgresql://${postgres.host}:5432/docker driver: org.postgresql.Driver username: docker password: docker 

尝试${db.host} ,根据文档 :

链接服务的容器将可以在与别名相同的主机名上访问,如果没有指定别名,则服务名称是可访问的。