![](/img/trans.png)
[英]Spring service in docker container cannot connect to mysql in docker container
[英]Cannot connect to MySQL service in MySQL docker container?
所以,我有一个 MySQL docker 容器,我在上面运行脚本写入数据库,但是当我执行脚本时,我的脚本抛出
mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
必须要在Dockerfile中启动MySQL服务吗?
docker-compose.yml:
version: '3.3'
services:
db:
build: .
restart: always
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
volumes:
- ./db_data:/docker-entrypoint-initdb.d
首先,您需要公开 MySQL 端口3306
或您为commmand
设置的任何其他端口,然后您可以从命令参数获得帮助。
一个工作样本是这样的:
version: '3.1'
services:
db:
image: mysql
container_name: mysql_test
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: test
MYSQL_USER: test_user
MYSQL_PASSWORD: test_password
ports:
- 30001:3306
expose:
- 30001
volumes:
- my-db:/var/lib/mysql
networks:
- test
networks:
test:
volumes:
my-db:
driver: local
使用此示例代码,您将能够使用localhost:30001
从主机连接到您的数据库,并从同一网络中的其他容器连接到mysql_test:3306
。
如果你想在你的主机上执行脚本,你需要导出端口 3306
version: '3.3'
services:
db:
build: .
restart: always
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- 3306:3306
volumes:
- ./db_data:/docker-entrypoint-initdb.d
如果您尝试在 docker 内部执行(例如使用 docker exec),请检查容器是否已启动docker ps
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.