我使用此命令将我的项目部署到
aws
ecs
。
docker compose -f docker-compose.fargate.yml up
version: "3.9"
services:
admindjango:
image: 6781xxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/st_admin_site:latest
ports:
- "8011:8011"
restart: always
command: uwsgi --http :8011 --module admin_site.wsgi
nginx:
image: 6781xxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/st_nginx:latest
ports:
- '80:80'
depends_on:
- admindjango
一开始看起来不错,最后却失败了。
堆栈也被删除。
我可以猜测docker中存在一些错误,但是堆栈被删除了,所以我找不到任何关于发生了什么的线索。有什么好的方法可以查看日志什么的吗?
(base) whitebear$ docker compose -f docker-compose.fargate.yml up
WARNING services.restart: unsupported attribute
WARNING services.scale: unsupported attribute
WARNING services.scale: unsupported attribute
[+] Running 20/20
⠿ monitor-admin DeleteComplete 358.5s
⠿ NginxTaskExecutionRole DeleteComplete 242.0s
⠿ CloudMap DeleteComplete 352.6s
⠿ Cluster DeleteComplete 306.6s
⠿ LogGroup DeleteComplete 308.7s
⠿ NginxTCP80TargetGroup DeleteComplete 242.0s
⠿ DefaultNetwork DeleteComplete 306.6s
⠿ AdmindjangoTaskExecutionRole DeleteComplete 309.7s
⠿ LoadBalancer DeleteComplete 307.6s
⠿ AdmindjangoTCP8011TargetGroup DeleteComplete 307.6s
⠿ Default80Ingress DeleteComplete 229.9s
⠿ DefaultNetworkIngress DeleteComplete 228.9s
⠿ Default8011Ingress DeleteComplete 228.9s
⠿ NginxTaskDefinition DeleteComplete 211.9s
⠿ AdmindjangoTaskDefinition DeleteComplete 276.9s
⠿ AdmindjangoServiceDiscoveryEntry DeleteComplete 257.6s
⠿ NginxServiceDiscoveryEntry DeleteComplete 192.3s
⠿ NginxTCP80Listener DeleteComplete 87.4s
⠿ AdmindjangoTCP8011Listener DeleteComplete 152.8s
⠿ AdmindjangoService DeleteComplete 142.9s
AdmindjangoService EssentialContainerExited: Essential container in task exited
我们最近引入了避免 CFN 中自动回滚的功能,但 docker 并没有利用这一点(据我所知)。
在这种情况下,最好的选择(无论如何我都是这样做的)是密切监视部署并检查任务日志。 CFN 消息表明基本容器已退出。这意味着
nginx
或admindjango
容器(部署在同一ECS集群下的单独ECS服务和单独ECS任务中)长期不稳定并退出。您需要在 ECS 控制台中找到它们并浏览容器日志以了解发生了什么(哪一个失败以及原因)。
我想这个组合在本地效果很好,我猜?
您可以做的另一件事是设置 CloudWatch 日志并在 docker-compose 文件中定义它。
只需创建一个新的 CloudWatch 日志组即可
aws logs create-log-group --log-group-name <your-log-group-name>
然后您应该设置日志组名称、AWS 区域以及前缀,以便在您需要时标记日志。将多个容器连接到同一个日志组。
services:
your-service:
image: your-image
logging:
driver: awslogs
options:
awslogs-group: your-log-group-name
awslogs-region: your-aws-region
awslogs-stream-prefix: your-log-stream-prefix
然后,您应该能够在 CloudWatch 界面中或通过使用 AWS CLI 中的命令来查看它们。