【发布时间】:2020-05-12 09:01:23
【问题描述】:
假设我有以下撰写文件:
networks:
my_network:
services:
...
mysql:
container_name: "mysql"
image: "mysql:5.7"
volumes:
- ./mysql.cnf:/etc/mysql/conf.d/mysql.cnf
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_USER: "user"
MYSQL_PASSWORD: "password"
MYSQL_DATABASE: "test-db"
ports:
- "3306:3306"
restart: always
networks:
- my_network
一旦我运行docker-compose up,我的服务就会启动,我可以看到我的 MySQL 服务器已准备好接受连接。现在我需要做什么才能从容器“外部”访问 mysql 终端提示符?我记得看到一位老师(从一个新终端)运行另一个 docker 容器,并访问 MySQL 命令提示符,使他能够从另一个终端窗口手动管理数据库,但我不记得确切的命令了。
我尝试像这样运行一个新的 Docker 容器:
docker run -it --rm --name mysqlterm \
--network="compose_project_my_network" \
--link mysql mysql:5.7 \
sh -c 'exec mysql \
-h "localhost" -P 3306" \
-uroot \
-ppassword'
但不幸的是,容器无法连接到 MySQL 服务器,给我以下错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)。
我猜“本地主机”或 3306 端口是错误的?我应该在这些参数中输入什么?
提前感谢您的回答:)
【问题讨论】:
标签: mysql docker docker-compose