Docker-compose.yml for NodeJs with MySQL on AWS Elastic Beanstalk 单容器 Docker

Posted

技术标签:

【中文标题】Docker-compose.yml for NodeJs with MySQL on AWS Elastic Beanstalk 单容器 Docker【英文标题】:Docker-compose.yml for NodeJs with MySQL on AWS Elastic Beanstalk single container Docker 【发布时间】:2020-05-03 16:14:37 【问题描述】:

我有一个托管在 AWS EB 单容器 Docker 上的 Nodejs 应用程序。我从应用程序连接到 mysql 数据库。 现在我正在通过上传 zip 文件从 AWS 控制台部署我的应用程序。一切都按预期工作。 我希望能够使用 CLI 将更改推送到 AWS。 我的理解是我需要 docker-compose.yml 文件来完成它。我见过 docker-compose 文件的示例,它创建了两个容器,一个用于节点,另一个用于 mysql。 有没有办法使用 docker-compose.yml 并仍然部署到单个容器 Docker?

提前感谢您的任何指导。

【问题讨论】:

【参考方案1】:

我认为您不能将 docker-compose 文件部署到 Elastic Beanstalk。但是,我可以想到两种从命令行部署代码的方法:

一种是将现有的 zip 文件放入 s3 存储桶(可以编写脚本),然后使用 Elastic Beanstalk 命令行,如下所示:

aws elasticbeanstalk create-application-version --application-name avengers \
    --version-label v1 \
    --source-bundle S3Bucket="avengers-docker-eb",S3Key="deployment.zip" \
    --auto-create-application \
    --region eu-west-3

完整的说明在这里:https://read.acloud.guru/docker-on-elastic-beanstalk-tips-e1a4e6b70ff2

第二种方法,您可能更喜欢的方法是创建一个 Dockerrun.aws.json 文件,该文件在 s3 存储桶或 docker 注册表中指向您的 docker 映像(您可以使用 aws 文件)。从那里您可以像这样从 cli 更新您的应用程序:

aws elasticbeanstalk update-environment --application-name [your_app_name] --environment-name [your_environment_name] --version-label [your_version_label]

相关文档在这里:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/single-container-docker.html

是的

【讨论】:

第二种方式听起来很吸引我。非常感谢

以上是关于Docker-compose.yml for NodeJs with MySQL on AWS Elastic Beanstalk 单容器 Docker的主要内容,如果未能解决你的问题,请参考以下文章

如何从 docker-compose.yml 更改 docker-compose.yml 中已安装卷的权限?

docker-compose.yml 使用说明

Docker-Compose.yml配置讲解

我应该把 docker-compose.yml 放在哪里

“docker-compose”命令为 docker-compose.yml 文件设置路径

使用 docker-compose.yml 自动删除容器