mysql - 为什么我不能在 Windows 中使用 5.7 或 5.6 mysql docker 映像而不是 mysql 8 和 terraform?
问题描述
我在 windows 中使用 terraformmysql_database
内部测试docker_container.mysql
,但每次我尝试使用与used bymysql:8
内部不同的图像时,terraform 需要 5 分钟来创建资源并引发以下错误:docker_image.mysql
docker_container.mysql
mysql_database
Error: Could not connect to server: dial tcp 127.0.0.1:3306: connectex: No connection could be made because the target machine actively refused it.
on main.tf line 33, in resource "mysql_database" "test":
33: resource "mysql_database" "test" {
这是 main.tf:
provider "docker" {
host = "npipe:////.//pipe//docker_engine"
}
resource "docker_image" "mysql" {
name = "mysql:8"
//keep_locally = true
}
resource "docker_container" "mysql" {
name = "mysql"
image = docker_image.mysql.latest
restart = "always"
env = [
"MYSQL_ROOT_PASSWORD=root"
]
volumes {
volume_name = "mysql-vol"
container_path = "/var/lib/mysql"
}
ports {
internal = 3306
external = 3306
}
}
provider "mysql" {
endpoint = "127.0.0.1:3306"
username = "root"
password = "root"
}
resource "mysql_database" "test" {
name = "test"
depends_on = [docker_container.mysql]
}
我正在测试https://hub.docker.com/_/mysql上显示的 mysql 图像标签,特别是 5.6、5.7 和 8,但仅使用 mysql:8 似乎有效 是否有其他方法可以引用那些 mysql图片标签?
解决方案
我试图验证这个问题,当你保持相同时,我观察到与你相同的错误,仅适用于 mysql 5.7 和 5.6 volumes
。
从 terraform 脚本中删除以下部分后
volumes {
volume_name = "mysql-vol"
container_path = "/var/lib/mysql"
}
并删除现有的 mysql docker 映像,mysql 5.6、mysql 5.7 和 8 按预期工作。
顺便说一句,导致连接失败的错误是:
ERROR 2013 (HY000): Lost connection to MySQL server at 'handshake: reading initial communication packet', system error: 11
推荐阅读
- matlab - 在 matlab 中,我们通过 A\B 计算 inv(A)* B。朱莉娅呢?请注意,A&B 是两个大型稀疏矩阵
- amazon-web-services - AWS CLI:aws s3 presign 不适用于 ap-east-1(香港)区域(“位置约束与区域特定端点不兼容”)
- c - Valgrind 在空白程序上显示大量内存泄漏
- php - 如何从 Laravel 中的 ->get() 和 ->find($id) 获得类似的结果
- spring - 在 Java Spring Boot 中实现工作流引擎
- python - 你如何迭代行索引并从python中的数据集中找到具有最大行列式的组?
- flutter - 如何将横幅广告的位置设置在右上角
- node.js - 回送/快速标记项目以在一段时间后删除
- scala - 为什么在 spark aggregateByKey 中从未调用组合器?
- reactjs - 在箭头函数内调用箭头函数。反应原生