簡體   English   中英

使用Docker-compose在Docker中鏈接容器的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM