【发布时间】:2019-12-03 14:12:21
【问题描述】:
以下文件是一个 docker-compose 文件。如果我通过 docker-compose up 执行它,则容器会自行创建,但无法通过终端连接到服务器,就像通过数据库可视化编辑器一样。而且,如果我通过终端通过 docker inspect 检查容器,一些值(即 IP 地址)是空的。
如果我尝试通过 docker run 命令手动创建相同的容器,通过命令行传递相同的参数,一切正常,如果我通过终端检查容器,所有值都是正确的(另外,特别是,IP 地址),我可以通过终端连接到数据库,就像通过 db 可视化编辑器一样。
为什么会发生,为什么特别是通过这个 docker-compose 文件创建 mySql 容器时,ipaddress 似乎是空的?我的 docker compose 文件不正确吗?我检查了几次
version: '3.6'
services:
mysql:
image: mysql:5.7
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=xyz
ports:
- 127.0.0.1:port_number:port_number
volumes:
- mysql:/var/lib/mysql
- ./mysql-init:/docker-entrypoint-initdb.d
command:
- --max-allowed-packet=64M
volumes:
mysql: {}
编辑:回复 2 个用户,
1) Port_number 在原始文件中正好是 3306; 2)完整的运行命令是
sudo docker run --name my_mysql -e MYSQL_ROOT_PASSWORD=my_password -p 3306:3306 mysql:5.7
【问题讨论】:
-
请包含您使用的完整的
docker run命令。 -
只需添加
ports: 3306:3306 -
我通过编辑我的原始问题回复了两位用户。非常感谢!
-
Compose 容器是否真正启动了;有几个选项不同?
docker inspect输出是非常低级的调试信息,通常没有用处,尤其是它报告的 IP 地址在许多极其常见的上下文中不起作用。 -
非常感谢大卫;检查不是基本的,只是向您报告附加信息。主要问题是,通过 docker compose 它不起作用,而通过命令行它可以正常工作。你有什么想法吗?
标签: mysql docker docker-compose