如何解决连接到 mysql 容器:docker compose 项目中 localhost 的等价物是什么?
我有这个 docker-compose.yml
文件,其中有一项服务 (log_app
) 试图写入 MysqL 数据库 (mydb
)。
version: '3.4'
services:
mydb:
container_name: MysqL_data
restart: always
image: MysqL:8.0.22
environment:
MysqL_ROOT_PASSWORD: ${MysqL_ROOT_PW}
MysqL_DATABASE: ib
MysqL_PASSWORD: ${MysqL_PW}
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ./MysqL-data:/var/lib/MysqL
tws:
build: .
container_name: ib_logger_app
volumes:
- ./ib/IBController.ini:/root/IBController/IBController.ini
- ./ib/jts.ini:/root/Jts/jts.ini
environment:
TradING_MODE: ${TWS_TradING_MODE}
TWSUSERID: ${TWS_USER_ID}
TWSPASSWORD: ${TWS_PASSWORD}
FIXUSERID:
FIXPASSWORD:
XVFB_ARGS: -ac -screen 0 1024x768x16 +extension RANDR
restart: always
ports:
- 5901:5900
depends_on:
- mydb
log_app:
build: log_app/ib_client
environment:
- IB_GATEWAY_URLNAME=tws
- IB_GATEWAY_URLPORT=4004
- MKT_DATA_TYPE=4
restart: on-failure
depends_on:
- tws
- mydb
volumes:
MysqL-data:
当我在裸机服务器上运行它时,一切正常,但在这种情况下,我连接到端口 localhost
上的 3306
。不过,这在这里似乎行不通。我得到
Can't connect to MysqL server on 'localhost' (99)
我一直在读到 3306 仍然是正确的端口,但是 localhost
和 127.0.0.1
现在是错误的。都不适合我。
我还在此网站上看到一些建议将 localhost
更改为 host.docker.internal
的答案,但这给了我:
Can't connect to MysqL server on 'host.docker.internal' (111)
解决方法
主机名将是您的 docker-compose 文件中定义的容器名称。
在您的示例中,您应该使用 mydb:3306
而不是 localhost:3306
编辑:
确保这一点的一种方法是 exec
进入您要连接并运行的容器:
telnet mydb 3306
看看它是否有效(但可能需要额外安装 telnet
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。