gpt4 book ai didi

docker - 为什么docker-compose无法从MySQL容器中查找IP地址?

转载 作者:行者123 更新时间:2023-12-02 20:49:39 24 4
gpt4 key购买 nike

我的own_app需要一个MySQL数据库。问题在于,own_app容器需要使用MySQL数据库的ip。我的目的是通过使用docker-compose.yml解决此问题。

Dockerfile

ENTRYPOINT ["docker-entrypoint.sh"]

docker-compose.yml

基于 Wordpress example,对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”。

关于docker - 为什么docker-compose无法从MySQL容器中查找IP地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42633206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com