【问题标题】:Running cronjob in custom linx container on Azure App Service在 Azure 应用服务上的自定义 linx 容器中运行 cronjob
【发布时间】:2022-01-23 12:44:49
【问题描述】:

我正在 Azure 应用服务上部署的容器中运行 Strapi 的实例。我的设置使用 SQLite 数据库的 Strapi,我想定期备份到 Azure 上的存储容器。为此,我已将 AzCopy 和 cron 的安装步骤包含在我的 Dockerfile 中。我还复制了各种配置和 bash 脚本,包括在容器启动时启动各种服务的入口点脚本、运行复制命令以执行实际备份的备份脚本和定期运行该脚本的 crontab 文件。目前,在我测试时设置为每 5 分钟一次,但最终将是每天一次。

无论我尝试什么,crontab 作业在部署到应用服务时都不会运行,但在本地运行时却可以完美运行。这绝对是 crontab,因为我可以手动运行相同的命令,然后备份继续进行并将输出写入日志文件。

我已经排除了 cron 没有运行,命令 service cron status 返回 cron is running. 我的日志文件仍然是空的,除非我手动触发备份脚本,是否有其他日志文件可以让我知道 cron 的任何问题?

备份-cron

*/5 * * * * sh /usr/local/src/sqlite/dailyBackup.sh >> /var/log/backup.log 2>&1
# An empty line is required at the end of this file for a valid cron file.

dailyBackup.sh

#!/bin/sh

. /tmp/.env

DATE=$(date "+%Y-%m-%d")
DATETIME="$DATE $(date "+%T")"
SAS_URL="$SAS_PATH/data-$DATE.db$SAS_TOKEN"

echo "$DATETIME Creating local backup"
cp /usr/local/src/sqlite/data.db /usr/local/src/sqlite/data-$DATE.db 
echo "$DATETIME Copying local backup to Azure"
azcopy cp /usr/local/src/sqlite/data-$DATE.db $SAS_URL
echo "$DATETIME Removing local database as data-$DATE.db"
rm /usr/local/src/sqlite/data-$DATE.db

入口点.sh

#!/bin/bash
# Copy environment variables to temp file for access via corn
echo SAS_PATH=$SAS_PATH >> /tmp/.env
echo SAS_TOKEN=$SAS_TOKEN >> /tmp/.env
# Get environment variables to show up in SSH session
eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)
# Start SSHD Process
sed -i "s/SSH_PORT/$SSH_PORT/g" /etc/ssh/sshd_config
/usr/sbin/sshd
## Start Cron and App
service cron start && yarn start

【问题讨论】:

  • 根据上面的描述,我们了解到你的 CRON 需要每 5 分钟运行一次,那么你的玉米表达式将是0 */5 * * * *。 CRON 表达式由六个字段组成 -> {second} {minute} {hour} {day} {month} {day of the week} [参考文档]-(docs.microsoft.com/en-us/azure/app-service/…)

标签: linux azure cron azure-web-app-service azure-appservice


【解决方案1】:

您是否将卷映射到您的容器?在这种情况下,备份方法可以通过 SMB 或 Azure Logic 应用程序完成。

这可以在资源左侧菜单的“配置”中找到,而不是在“路径设置”选项卡中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多