首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AWS上部署MySQL对接映像?

问如何在AWS上部署MySQL对接映像?
EN

Stack Overflow用户
提问于 2019-09-04 21:15:10
回答 2查看 3.6K关注 0票数 3

我很难在MySQL映像上部署AWS ECS FARGATE。

我拥有的cloudformation脚本如下(不用担心语法,我正在使用来管理cloudformation模板):

代码语言:javascript
复制
    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
                        )
                    ]
                )
            ]
        )

部署成功。我甚至可以看到任务运行了几秒钟,直到它的状态更改为停止了。

我唯一能看到的是:

  1. 任务中的停止原因基本容器退出
  2. 出口代码1

在本地,它的作用就像一种魅力。我在这里做错什么了?至少-有办法调试吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-05 05:57:42

所以我发现了一个错误。

首先你要做的就是在本地主机上测试那个码头容器,看看你是否可以重现这个问题。在我的例子中,具有完全相同环境的本地机器上的docker容器也崩溃了。我能够检查日志,并发现它无法创建"root“用户。只要更改用户和密码,一切都可以工作,甚至在ECS上也是如此。

这是在AWS 上运行mysql坞映像的完整堆栈。

代码语言:javascript
复制
    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

(就是这样:)

票数 1
EN

Stack Overflow用户

发布于 2019-09-05 03:22:01

对于AWS ECS,如果它正在停止,则可能会失败健康检查,从而导致容器重新启动。容器DB映射到哪个端口,您可以检查容器日志,看看它启动时发生了什么,然后停止了吗?另外,在服务或任务下检查ECS中的日志。把它贴在这里这样我就可以看看它们了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57795724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档