fix(celld-deploy): configure celld runtime via environment variables and copy wrangler config for d1 migrations
This commit is contained in:
+20
-12
@@ -134,6 +134,7 @@ trap 'rm -rf "$STAGING_DIR" ~/.ssh/truenas_deploy_key' EXIT
|
|||||||
{
|
{
|
||||||
echo "AWS_ACCESS_KEY_ID=${INPUT_S3_ACCESS_KEY}"
|
echo "AWS_ACCESS_KEY_ID=${INPUT_S3_ACCESS_KEY}"
|
||||||
echo "AWS_SECRET_ACCESS_KEY=${INPUT_S3_SECRET_KEY}"
|
echo "AWS_SECRET_ACCESS_KEY=${INPUT_S3_SECRET_KEY}"
|
||||||
|
echo "AWS_REGION=${S3_REGION}"
|
||||||
if [ -n "${INPUT_ENV_CONTENT:-}" ]; then
|
if [ -n "${INPUT_ENV_CONTENT:-}" ]; then
|
||||||
printf "%s\n" "$INPUT_ENV_CONTENT"
|
printf "%s\n" "$INPUT_ENV_CONTENT"
|
||||||
fi
|
fi
|
||||||
@@ -153,6 +154,12 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
|
- CELLD_BUCKET=s3://${BUCKET}
|
||||||
|
- S3_ENDPOINT=${INTERNAL_S3_ENDPOINT}
|
||||||
|
- CELLD_ADDR=0.0.0.0:8080
|
||||||
|
- CELLD_INTERNAL_ADDR=127.0.0.1:8081
|
||||||
|
- CELLD_ADVERTISE=127.0.0.1:8081
|
||||||
|
- CELLD_TRUST_FORWARDED_HEADERS=1
|
||||||
- CELLD_NODE=${CLEAN_APP}-truenas-1
|
- CELLD_NODE=${CLEAN_APP}-truenas-1
|
||||||
- CELLD_WATCH=/var/lib/celld/state
|
- CELLD_WATCH=/var/lib/celld/state
|
||||||
- CELLD_IDLE_EVICT_S=${IDLE_EVICT_S}
|
- CELLD_IDLE_EVICT_S=${IDLE_EVICT_S}
|
||||||
@@ -160,13 +167,6 @@ services:
|
|||||||
- CELLD_DEPLOY_POLL_S=${DEPLOY_POLL_S}
|
- CELLD_DEPLOY_POLL_S=${DEPLOY_POLL_S}
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/var/lib/celld
|
- ./data:/var/lib/celld
|
||||||
command:
|
|
||||||
- --bucket=s3://${BUCKET}
|
|
||||||
- --endpoint=${INTERNAL_S3_ENDPOINT}
|
|
||||||
- --region=${S3_REGION}
|
|
||||||
- --listen=0.0.0.0:8080
|
|
||||||
- --internal-listen=127.0.0.1:8081
|
|
||||||
- --advertise=127.0.0.1:8081
|
|
||||||
networks:
|
networks:
|
||||||
- ${NETWORK}
|
- ${NETWORK}
|
||||||
labels:
|
labels:
|
||||||
@@ -204,18 +204,26 @@ if [ "$REMOTE_STATE" != "${LOCAL_ENV_HASH}:${LOCAL_COMPOSE_HASH}:true" ]; then
|
|||||||
scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${STAGING_DIR}/.env" "${USER}@${HOST}:${REMOTE_DIR}/.env"
|
scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${STAGING_DIR}/.env" "${USER}@${HOST}:${REMOTE_DIR}/.env"
|
||||||
scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${STAGING_DIR}/docker-compose.yml" "${USER}@${HOST}:${REMOTE_DIR}/docker-compose.yml"
|
scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${STAGING_DIR}/docker-compose.yml" "${USER}@${HOST}:${REMOTE_DIR}/docker-compose.yml"
|
||||||
ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "chmod 600 ${REMOTE_DIR}/.env && cd ${REMOTE_DIR} && docker compose up -d --remove-orphans"
|
ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "chmod 600 ${REMOTE_DIR}/.env && cd ${REMOTE_DIR} && docker compose up -d --remove-orphans"
|
||||||
sleep 3
|
sleep 4
|
||||||
else
|
else
|
||||||
echo "⚡ TrueNAS container ${CLEAN_APP}-celld is already running with matching config; hot-reloading bundle in place!"
|
echo "⚡ TrueNAS container ${CLEAN_APP}-celld is already running; triggering immediate in-place reload..."
|
||||||
|
ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "
|
||||||
|
docker exec ${CLEAN_APP}-celld bash -c 'exec 3<>/dev/tcp/127.0.0.1/8081 && printf \"POST /reload HTTP/1.1\r\nHost: 127.0.0.1:8081\r\nContent-Length: 0\r\nConnection: close\r\n\r\n\" >&3 && head -n 1 <&3' 2>/dev/null || true
|
||||||
|
"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 8. Optional D1 SQLite migrations
|
# 8. Optional D1 SQLite migrations
|
||||||
if [ -n "${INPUT_D1_DATABASE:-}" ] && [ -d "migrations" ]; then
|
if [ -n "${INPUT_D1_DATABASE:-}" ] && [ -d "migrations" ]; then
|
||||||
echo "🗄️ Applying D1 migrations for database '${INPUT_D1_DATABASE}'..."
|
echo "🗄️ Applying D1 migrations for database '${INPUT_D1_DATABASE}'..."
|
||||||
ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "rm -rf ${REMOTE_DIR}/data/migrations && mkdir -p ${REMOTE_DIR}/data/migrations"
|
ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "rm -rf ${REMOTE_DIR}/data/project && mkdir -p ${REMOTE_DIR}/data/project/migrations"
|
||||||
scp -r -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no migrations/. "${USER}@${HOST}:${REMOTE_DIR}/data/migrations/"
|
for f in wrangler.json wrangler.jsonc wrangler.toml; do
|
||||||
|
if [ -f "$f" ]; then
|
||||||
|
scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "$f" "${USER}@${HOST}:${REMOTE_DIR}/data/project/$f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
scp -r -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no migrations/. "${USER}@${HOST}:${REMOTE_DIR}/data/project/migrations/"
|
||||||
ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "
|
ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "
|
||||||
docker exec -w /var/lib/celld ${CLEAN_APP}-celld celld d1 migrations apply '${INPUT_D1_DATABASE}' \
|
docker exec -w /var/lib/celld/project ${CLEAN_APP}-celld celld d1 migrations apply '${INPUT_D1_DATABASE}' . \
|
||||||
--bucket 's3://${BUCKET}' \
|
--bucket 's3://${BUCKET}' \
|
||||||
--endpoint '${INTERNAL_S3_ENDPOINT}' \
|
--endpoint '${INTERNAL_S3_ENDPOINT}' \
|
||||||
--region '${S3_REGION}'
|
--region '${S3_REGION}'
|
||||||
|
|||||||
Reference in New Issue
Block a user