[英]Issue linking containers in Docker using Docker-compose
我正在使用Docker來准備我的微服務架構。 我在嘗試使用docker-compose將一個容器與另一個容器鏈接時遇到了一些問題。
基本上,我有一個用於postgressql映像的容器,以及一個使用spring boot開發的java微服務,該服務應該連接到數據庫容器。
所以我在docker-compose.yml中設置一個鏈接,並使用以下方式將數據庫容器ip引用為“ db”:
- "JAVA_OPTS=-Dpostgres.host=db"
但是我在使用docker啟動微服務時遇到以下錯誤:
原因:java.lang.IllegalArgumentException:無法解析值“ jdbc:postgresql:// $ {postgress.host}:5432 / docker”中的占位符“ postgress.host”
因此,基本上無法解析此占位符,但通常由docker-composed組成的系統應注意設置此系統變量以指向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}
:
鏈接服務的容器可以使用與別名相同的主機名訪問,如果未指定別名,則可以使用服務名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.