Как связать postgres db и контейнер Django внутри ECS?
Мне нужно руководство по этому конвейеру для развертывания теста на ECS, я знаю, что postgres db в контейнере - не лучшее решение по сравнению с RDS и другими, но я хотел бы хотя бы знать, возможно ли это, хе-хе. Я застрял с этим уже несколько дней, он просто застрял на части запуска файла wait-for-it.sh и не подключается к БД, я проверил в AWS cloudwatch и БД готовится принимать соединения, но Django никогда не подключается к ней. Я использую стандартный VPC, подключенный к кластеру ECS, и внутри него есть группа безопасности с входящими правилами, разрешающими трафик в порту 8000 для ay IP и другой для порта 5432, который разрешает трафик для любого IP тоже, что не так?
и мой файл wait-for-it.sh:
#!/usr/bin/env bash
# Use this script to test if a given TCP host/port are available
TIMEOUT=60
QUIET=0
HOST="$1"
PORT="$2"
echo "Waiting for $HOST:$PORT to be available..."
for i in `seq $TIMEOUT` ; do
echo "Attempt $i: Checking connection to $HOST:$PORT..."
nc -zv "$HOST" "$PORT" > /dev/null 2>&1
result=$?
if [ $result -eq 0 ] ; then
echo "Connection to $HOST:$PORT succeeded."
exit 0
fi
echo "Attempt $i: Connection to $HOST:$PORT failed."
sleep 1
done
echo "Operation timed out after $TIMEOUT seconds" >&2
exit 1```
I tried change the localhost from db to localhost but did not work, im expecting the container to do not stop and see this functional, remembering that im pushing images to ECR from a macbook m1, but i think i fixed this in build part and ECS service is working, and db container is good, if was something behind i think i would not have gotten so far to ECS.
Вы развертываете на Fargate. В Fargate все контейнеры, запущенные в одной задаче, имеют общий интерфейс Elastic Network Interface и могут взаимодействовать друг с другом через localhost
или 127.0.0.1
через соответствующие порты. Это задокументировано здесь.
Если вы измените это:
{ "name": "DB_HOST", "value": "db" },
к этому:
{ "name": "DB_HOST", "value": "127.0.0.1" },
это должно сработать.