53 lines
1.7 KiB
Bash
53 lines
1.7 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
APP_NAME="eop-api"
|
|
AWS_REGION="ap-southeast-7"
|
|
ECR_REPO_URI="804770683810.dkr.ecr.ap-southeast-7.amazonaws.com/amrez/eop-services"
|
|
SSM_PREFIX="/amrez/eop"
|
|
|
|
need() {
|
|
local v
|
|
v=$(aws ssm get-parameter --with-decryption --region "$AWS_REGION" --name "${SSM_PREFIX}/$1" \
|
|
--query "Parameter.Value" --output text 2>/dev/null || true)
|
|
if [ -z "${v:-}" ] || [ "$v" == "None" ]; then
|
|
echo "ERROR: missing SSM parameter: ${SSM_PREFIX}/$1" >&2; exit 1
|
|
fi
|
|
echo "$v"
|
|
}
|
|
|
|
DC=$( need "Connections__DefaultConnection") # Host=127.0.0.1;Port=15432;...
|
|
UST=$( need "Connections__UseSchemaPerTenant")
|
|
SB=$( need "Connections__StorageBackend")
|
|
RC=$( need "Connections__RedisConnection")
|
|
RDB=$( need "Connections__RedisDb")
|
|
|
|
aws ecr get-login-password --region "$AWS_REGION" | docker login --username AWS --password-stdin "$ECR_REPO_URI"
|
|
docker pull "$ECR_REPO_URI:latest"
|
|
|
|
if docker ps -aq -f name=^/${APP_NAME}$ >/dev/null; then
|
|
docker stop "$APP_NAME" || true
|
|
docker rm "$APP_NAME" || true
|
|
fi
|
|
|
|
# DB tunnel ต้องพร้อม (15432)
|
|
if ! ss -lnt | grep -q ":15432 "; then
|
|
echo "ERROR: tunnel 127.0.0.1:15432 is not listening" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# host network ⇒ 127.0.0.1 ใน container = ของโฮสต์
|
|
docker run -d --name "$APP_NAME" \
|
|
--network=host \
|
|
--restart=always \
|
|
-e ASPNETCORE_ENVIRONMENT=Production \
|
|
-e ASPNETCORE_URLS=http://0.0.0.0:80 \
|
|
-e "Connections__DefaultConnection=${DC}" \
|
|
-e "Connections__UseSchemaPerTenant=${UST}" \
|
|
-e "Connections__StorageBackend=${SB}" \
|
|
-e "Connections__RedisConnection=${RC}" \
|
|
-e "Connections__RedisDb=${RDB}" \
|
|
"$ECR_REPO_URI:latest"
|
|
|
|
echo "Deployed $APP_NAME using $ECR_REPO_URI:latest"
|