簡體   English   中英

為什么docker-compose無法從MySQL容器中查找IP地址?

[英]Why does docker-compose not lookup the IP address from the MySQL container?

我的own_app需要一個MySQL數據庫。 問題在於,own_app容器需要對MySQL數據庫進行ip處理。 我的目的是通過使用docker-compose.yml解決此問題。

Dockerfile

ENTRYPOINT ["docker-entrypoint.sh"]

泊塢窗,compose.yml

基於Wordpress示例 ,對docker-compose.yml進行了如下修改:

version: '2'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   own_app:
     depends_on:
       - db
     image: own_app:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       MYSQL_DB_HOST: db:3306
volumes:
    db_data:

但它插入db:3306

db.default.url="jdbc:mysql://db:3306/database_name"

而不是IP地址

問題

駐留在docker-entrypoint.sh的sed語句運行良好,即用$ MYSQL_DB_HOST環境變量替換localhost。 問題是docker-compose返回db:3306而不是<ip>:3306

為什么docker-compose不查找IP地址?

docker-compose中的環境變量只是字符串,它不知道它是主機名還是其他任何文本。 唯一完成的解析是使用${varname}語法擴展變量。

為了將容器連接在一起,您無論如何都不希望IP地址可以更改。 使用基於DNS的發現,它將從同一網絡上任何其他容器中的服務名稱中解析“ db”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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