我很难在MySQL映像上部署AWS ECS FARGATE。
我拥有的cloudformation脚本如下(不用担心语法,我正在使用来管理cloudformation模板):
TaskDefinition(
'WordpressDatabaseTaskDefinition',
RequiresCompatibilities=['FARGATE'],
Cpu='512',
Memory='2048',
NetworkMode='awsvpc',
ContainerDefinitions=[
ContainerDefinition(
Name='WordpressDatabaseContainer',
Image='mysql:5.7',
Environment=[
Environment(Name='MYSQL_ROOT_PASSWORD', Value='root'),
Environment(Name='MYSQL_DATABASE', Value='wpdb'),
Environment(Name='MYSQL_USER', Value='root'),
Environment(Name='MYSQL_PASSWORD', Value='root'),
],
PortMappings=[
PortMapping(
ContainerPort=3306
)
]
)
]
)部署成功。我甚至可以看到任务运行了几秒钟,直到它的状态更改为停止了。
我唯一能看到的是:
在本地,它的作用就像一种魅力。我在这里做错什么了?至少-有办法调试吗?
发布于 2019-09-05 05:57:42
所以我发现了一个错误。
首先你要做的就是在本地主机上测试那个码头容器,看看你是否可以重现这个问题。在我的例子中,具有完全相同环境的本地机器上的docker容器也崩溃了。我能够检查日志,并发现它无法创建"root“用户。只要更改用户和密码,一切都可以工作,甚至在ECS上也是如此。
这是在AWS 上运行mysql坞映像的完整堆栈。
self.wordpress_database_task = TaskDefinition(
'WordpressDatabaseTaskDefinition',
RequiresCompatibilities=['FARGATE'],
Cpu='512',
Memory='2048',
NetworkMode='awsvpc',
# If your tasks are using the Fargate launch type, the host and sourcePath parameters are not supported.
Volumes=[
Volume(
Name='MySqlVolume',
DockerVolumeConfiguration=DockerVolumeConfiguration(
Scope='shared',
Autoprovision=True
)
)
],
ContainerDefinitions=[
ContainerDefinition(
Name='WordpressDatabaseContainer',
Image='mysql:5.7',
Environment=[
Environment(Name='MYSQL_ROOT_PASSWORD', Value='root'),
Environment(Name='MYSQL_DATABASE', Value='wpdb'),
Environment(Name='MYSQL_USER', Value='wordpressuser'),
Environment(Name='MYSQL_PASSWORD', Value='wordpressuserpassword'),
],
PortMappings=[
PortMapping(
ContainerPort=3306
)
]
)
]
)
self.wordpress_database_service = Service(
'WordpressDatabaseService',
Cluster=Ref(self.ecs_cluster),
DesiredCount=1,
TaskDefinition=Ref(self.wordpress_database_task),
LaunchType='FARGATE',
NetworkConfiguration=NetworkConfiguration(
AwsvpcConfiguration=AwsvpcConfiguration(
Subnets=[Ref(sub) for sub in VpcFormation().public_subnets],
AssignPublicIp='ENABLED',
SecurityGroups=[Ref(self.security_group)]
)
),
)注意AssignPublicIp='ENABLED'选项,这样您就可以远程连接到数据库。
在堆栈完成后,我能够成功地连接到一个命令:
mysql -uwordpressuser -pwordpressuserpassword -h18.202.31.123
(就是这样:)
发布于 2019-09-05 03:22:01
对于AWS ECS,如果它正在停止,则可能会失败健康检查,从而导致容器重新启动。容器DB映射到哪个端口,您可以检查容器日志,看看它启动时发生了什么,然后停止了吗?另外,在服务或任务下检查ECS中的日志。把它贴在这里这样我就可以看看它们了。
https://stackoverflow.com/questions/57795724
复制相似问题