【发布时间】:2019-09-17 09:07:25
【问题描述】:
我有一个正在运行的容器(如果更具体的话,是 wordpress 容器),它试图连接到 mysql rds 实例。
fargate ecs服务容器参数:
{
"executionRoleArn": "ignore-this",
"containerDefinitions": [
{
"name": "MyCoolContainer",
"image": "wordpress:latest",
"essential": true,
"environment": [
{"name": "WORDPRESS_DB_HOST", "value": "host:3306"},
{"name": "WORDPRESS_DB_USER", "value": "user"},
{"name": "WORDPRESS_DB_PASSWORD", "value": "password"},
{"name": "WORDPRESS_DB_NAME", "value": "name"}
],
"portMappings": [
{
"hostPort": 80,
"protocol": "tcp",
"containerPort": 80
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/aws/ecs/fargate/prefix",
"awslogs-region": "eu-west-1",
"awslogs-stream-prefix": "prefix"
}
}
}
],
"requiresCompatibilities": [
"FARGATE"
],
"networkMode": "awsvpc",
"cpu": "256",
"memory": "512",
"family": "wordpress"
}
另外,对于安全组,我开放了22、80、443、3306端口IP 地址。
但是ECS中的容器还是无法启动,原因如下:
[17-Sep-2019 08:42:24 UTC] PHP 警告:mysqli::__construct(): (HY000/2002):第 22 行标准输入代码中的连接超时
MySQL 连接错误:(2002) 连接超时
MySQL 连接错误:(2002) 连接超时
但是,当尝试使用命令从本地计算机连接时,我可以确保 RDS 实例是可访问的:
mysql -uuser -ppassword -hhost -P3306
另外,我可以确保(wordpress)容器在本地机器上成功运行并成功连接到远程 RDS 数据库,没有超时。
编辑 这是我的环境在 ECS UI 面板中的样子: (我试图将这些值复制粘贴到我的本地 mysql 命令中,并且连接成功。)
我怀疑 aws 服务配置有问题。有什么想法吗?
【问题讨论】:
-
从
{"name": "WORDPRESS_DB_HOST", "value": "host:3306"}删除端口,然后它应该可以工作 -
您好,感谢您的建议。然而,这并没有解决问题。连接仍然超时。
-
我想知道环境变量设置不正确。可以控制值
WORDPRESS_DB_HOST,这样您就可以签入cloudwatch log fargate。环境变量 syantax 似乎错误或设置不正确 -
你能从 Fargate ping 通吗?有 NAT 或网关吗?
-
再验证一件事.. 容器是否能够与外界通信?
标签: mysql wordpress amazon-web-services docker amazon-ecs