0

我有一个在环境python3中运行的项目docker container

我的 Python 项目使用但使用存储在计算机中的凭据文件,该文件AWS Acces keys使用.secretADD

我将我的项目部署到EC2. 服务器有一个运行良好的任务。我能够通过端口8080到达webserverAirflow)。

当我进行新的提交并推送到master branchgithub 中时,钩子会下载内容并在没有构建阶段的情况下部署它。

新代码在EC2服务器中,我使用它进行检查,ssh但是在任务中运行的容器“卡住”并且bind volumes消失了,直到我重新启动新任务它们才工作。卷再次从 0 开始应用,并且引用了新代码。此操作是完全手动的。

然后,为了修复它,我听了AWS ECS Blue/Green部署,所以我实现了它。在这种情况下,Codepipeline添加一个build阶段,但这里开始出现问题。如果在构建中我尝试将 a 推docker image送到ECR,我的任务定义引用它失败。它失败是因为在服务器中,并且在 repo(我提交推送我的新代码)中没有凭据文件。

docker image我尝试从我的 . 中执行最新的操作,并localhost避免在. 如果我点击任何地方,它会说找不到代码。codepipeline8080

因此,在一般审查中,我想了解我做错了什么,以及如何在一般准则中进行修复,另一方面询问为什么我的集群中EC2的实例有 3 个 ip。AWS ECS Blue/Green

在此处输入图像描述

第一个是我用来通过端口 22 访问服务器的那个。如果我在那里运行,docker ps我会看到一个或两个容器在运行,这取决于我是否处于新部署的中间。如果我在这里搜索我的新代码,它不在这里......

其他两个 ip 每次都在变化deployment(我猜它的蓝色和绿色)并且都工作正常,直到Codepipeline破坏绿色(5 分钟等待时间),但代码不存在。我知道这一点,因为当我单击网络服务器中的任何链接时,它会失败说Airflow Dag尚未找到。

所以我的问题是我有一个完整的工作AWS ECS Blue/Green deployment但没有我的代码。然后我的网络服务器没有任何东西可以运行。

4

0 回答 0