{"id":810,"date":"2026-05-14T11:36:10","date_gmt":"2026-05-14T03:36:10","guid":{"rendered":"https:\/\/blog.itsmygo.uk\/2026\/05\/14\/dokploy-schedules-%e8%b8%a9%e5%9d%91%ef%bc%9a%e6%90%9e%e6%87%82%e4%b8%89%e5%80%8b%e6%8e%92%e7%a8%8b-tab%ef%bc%8c%e9%a0%86%e4%be%bf%e7%b9%9e%e9%81%8e%e4%b8%80%e5%80%8b%e9%81%a0%e7%ab%af-server\/"},"modified":"2026-05-14T11:36:10","modified_gmt":"2026-05-14T03:36:10","slug":"dokploy-schedules-%e8%b8%a9%e5%9d%91%ef%bc%9a%e6%90%9e%e6%87%82%e4%b8%89%e5%80%8b%e6%8e%92%e7%a8%8b-tab%ef%bc%8c%e9%a0%86%e4%be%bf%e7%b9%9e%e9%81%8e%e4%b8%80%e5%80%8b%e9%81%a0%e7%ab%af-server","status":"publish","type":"post","link":"https:\/\/blog.itsmygo.uk\/wordpress\/2026\/05\/14\/dokploy-schedules-%e8%b8%a9%e5%9d%91%ef%bc%9a%e6%90%9e%e6%87%82%e4%b8%89%e5%80%8b%e6%8e%92%e7%a8%8b-tab%ef%bc%8c%e9%a0%86%e4%be%bf%e7%b9%9e%e9%81%8e%e4%b8%80%e5%80%8b%e9%81%a0%e7%ab%af-server\/","title":{"rendered":"Dokploy Schedules \u8e29\u5751\uff1a\u641e\u61c2\u4e09\u500b\u6392\u7a0b tab\uff0c\u9806\u4fbf\u7e5e\u904e\u4e00\u500b\u9060\u7aef server \u7684 dockerode bug"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Dokploy Schedules \u8e29\u5751\uff1a\u641e\u61c2\u4e09\u500b\u6392\u7a0b tab\uff0c\u9806\u4fbf\u7e5e\u904e\u4e00\u500b\u9060\u7aef server \u7684 dockerode bug<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u8d77\u6e90<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u525b\u958b\u59cb\u7528 Dokploy \u7ba1\u7406\u4e00\u5806 self-hosted \u670d\u52d9\u6642\uff0c\u6bcf\u500b service \u9801\u9762\u4e0a\u6709\u4e09\u500b\u8ddf\u300c\u5b9a\u6642\u300d\u6709\u95dc\u7684 tab\uff1a<\/p>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><span><code class=\"hljs\">?tab=backups\n?tab=schedules\n?tab=volumeBackups\n<\/code><\/span><\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">\u65b0\u624b\u7b2c\u4e00\u6b21\u770b\u4e00\u5b9a\u9727\u715e\u715e\u2014\u2014\u9019\u4e09\u500b\u6771\u897f\u5230\u5e95\u5dee\u5728\u54ea\uff1f\u6211\u4ee5\u70ba Schedules \u5c31\u662f\u300c\u8a2d\u5b9a\u4ec0\u9ebc\u6642\u5019\u8dd1\u5099\u4efd\u300d\uff0c\u7d50\u679c\u5b8c\u5168\u4e0d\u662f\u3002\u91d0\u6e05\u904e\u7a0b\u4e2d\u9084\u9806\u4fbf\u8e29\u5230\u4e00\u500b\u9060\u7aef server \u624d\u6703\u51fa\u73fe\u7684\u96f7\uff0c\u8a18\u9304\u4e0b\u4f86\u7d66\u5f8c\u4eba\u53c3\u8003\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u500b tab \u5728\u505a\u4ec0\u9ebc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u5011\u5b8c\u5168\u7368\u7acb\u3001\u4e92\u4e0d\u76f8\u5e72\uff0c\u53ea\u662f\u540d\u5b57\u90fd\u8ddf\u300c\u5b9a\u6642\u300d\u6709\u95dc\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Tab<\/th>\n<th>\u5728\u505a\u4ec0\u9ebc<\/th>\n<th>\u6551\u5f97\u56de<\/th>\n<th>\u6551\u4e0d\u56de<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Backups<\/strong><\/td>\n<td>\u5b9a\u6642\u8dd1 <code>pg_dump<\/code> \/ <code>mysqldump<\/code> \u628a DB \u5167\u5bb9\u5012\u6210\u6a94\uff0c\u4e0a\u50b3 S3<\/td>\n<td>DB \u5167\u5bb9\uff08\u8cc7\u6599\u3001\u8a2d\u5b9a\uff09<\/td>\n<td>DB binary\u3001\u6a94\u6848 volume\u3001log<\/td>\n<\/tr>\n<tr>\n<td><strong>Volume Backups<\/strong><\/td>\n<td>\u628a docker volume \u6574\u9846\u6253 tar.gz \u4e0a S3<\/td>\n<td>\u4efb\u4f55\u7d14\u6a94\u6848\u985e\u8cc7\u6599<\/td>\n<td>\u904b\u884c\u4e2d\u7684 DB\uff08\u6703\u6293\u5230\u4e2d\u9593\u72c0\u614b\uff0c\u53ef\u80fd\u58de\uff09<\/td>\n<\/tr>\n<tr>\n<td><strong>Schedules<\/strong><\/td>\n<td>\u5230\u6307\u5b9a\u6642\u9593\u5728\u5bb9\u5668\/host \u5167\u8dd1\u4e00\u884c shell \u6307\u4ee4<\/td>\n<td>\u8ddf\u5099\u4efd<strong>\u5b8c\u5168\u7121\u95dc<\/strong>\u2014\u2014\u662f cron job<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u91cd\u9ede<\/strong>\uff1aBackup \u7684\u300c\u4ec0\u9ebc\u6642\u5019\u8dd1\u300d<strong>\u5beb\u5728 Backup \u81ea\u5df1\u88e1\u9762<\/strong>\uff08\u6bcf\u7b46 Backup \u90fd\u6709\u4e00\u500b cron \u6b04\u4f4d\uff0c\u4f8b\u5982 <code>0 4 * * 0<\/code>\uff09\u3002Schedules tab \u662f\u53e6\u4e00\u500b\u5b8c\u5168\u7368\u7acb\u7684\u529f\u80fd\uff0c\u7528\u4f86\u5b9a\u6642\u8dd1\u4f60\u81ea\u5df1\u60f3\u8dd1\u7684\u6307\u4ee4\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schedules \u80fd\u505a\u4ec0\u9ebc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u51e1\u662f\u300c\u5b9a\u6642\u8dd1\u4e00\u884c\u6307\u4ee4\u300d\u7684\u9700\u6c42\u90fd\u53ef\u4ee5\u653e\u9019\u3002\u4e00\u4e9b\u4f8b\u5b50\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. DB \u5065\u5eb7\u7dad\u8b77<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Postgres \u8dd1\u4e45\u4e86\u6703\u7d2f\u7a4d dead tuple\uff0c\u5b9a\u671f VACUUM \u53ef\u4ee5\u7dad\u6301\u6548\u80fd\uff1a<\/p>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker exec myapp-postgres<span class=\"hljs-number\">-1<\/span> psql -U myuser -d mydb -c <span class=\"hljs-string\">\"VACUUM ANALYZE;\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">2. \u5bb9\u5668\u5167\u66ab\u5b58\u6e05\u7406<\/h3>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">find \/app\/tmp -type f -mtime +<span class=\"hljs-number\">7<\/span> -<span class=\"hljs-keyword\">delete<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">3. \u5065\u5eb7\u6aa2\u67e5 + \u901a\u5831<\/h3>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl -fsS --max-time <span class=\"hljs-number\">2<\/span> http:<span class=\"hljs-comment\">\/\/myapp:3000\/ \\<\/span>\n  || curl -X POST <span class=\"hljs-string\">\"https:\/\/api.telegram.org\/bot&lt;TOKEN&gt;\/sendMessage\"<\/span> \\\n       -d chat_id=<span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">YOUR_ID<\/span>&gt;<\/span> -d \"text=myapp \u639b\u4e86\"\n<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">4. \u7b2c\u4e09\u65b9\u670d\u52d9\u7684 GC<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982 MLflow\u3001Sentry \u4e4b\u985e\u6709\u81ea\u5df1 GC \u6307\u4ee4\u7684\u670d\u52d9\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4ec0\u9ebc\u6642\u5019**\u4e0d**\u8a72\u7528 Dokploy Schedules<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>\u696d\u52d9\u908f\u8f2f\uff08\u722c\u87f2\u3001ETL\u3001\u5831\u8868\uff09\u2192 \u7528\u8a72\u9818\u57df\u7684 orchestrator\uff08\u4f8b\u5982 Airflow \/ Dagster \/ Prefect\uff09<\/li>\n\n\n<li>\u9700\u8981\u770b\u8840\u7de3\u3001retry\u3001\u4f9d\u8cf4\u95dc\u4fc2 \u2192 \u540c\u4e0a<\/li>\n\n\n<li>\u300c\u5931\u6557\u4e86\u5ba2\u6236\u6703\u54c0\u865f\u300d\u7684\u4e8b \u2192 \u540c\u4e0a\uff0c\u56e0\u70ba Dokploy Schedules \u6c92\u6709\u597d\u7684\u5931\u6557\u901a\u77e5\u6a5f\u5236<\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5224\u65b7\u53e3\u8a23<\/strong>\uff1a\u9019\u4ef6\u4e8b\u5982\u679c\u9023\u7e8c\u5931\u6557 3 \u5929\u6211\u6703\u4e0d\u6703\u75db\uff1f<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>\u6703\u75db \u2192 \u4e0d\u8981\u653e Dokploy Schedules<\/li>\n\n\n<li>\u4e0d\u6703\u75db \u2192 Dokploy Schedules \u5f88\u65b9\u4fbf<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u8e29\u5230\u7684\u96f7\uff1a<code>scheduleType=compose<\/code> \u5c0d\u9060\u7aef server \u6703\u58de<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u75c7\u72c0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u5efa\u4e86\u4e00\u500b schedule \u7d66\u67d0\u500b compose service\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>scheduleType: compose<\/code><\/li>\n\n\n<li><code>serviceName: postgres<\/code>\uff08compose \u88e1\u7684\u670d\u52d9\u540d\uff09<\/li>\n\n\n<li><code>command: psql -U myuser -d mydb -c \"VACUUM ANALYZE;\"<\/code><\/li>\n\n\n<li>cron: <code>0 3 * * 0<\/code><\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">UI \u986f\u793a 200 OK\uff0c\u4f46 manual run \u7acb\u523b 500\uff0cDokploy \u5bb9\u5668 log \u51fa\u73fe\uff1a<\/p>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">The URL ssh:<span class=\"hljs-number\">192.168<\/span><span class=\"hljs-number\">.50<\/span><span class=\"hljs-number\">.10<\/span>:<span class=\"hljs-number\">22192.168<\/span><span class=\"hljs-number\">.50<\/span><span class=\"hljs-number\">.10<\/span> is invalid\nExecution error: <span class=\"hljs-built_in\">Error<\/span>: No response <span class=\"hljs-keyword\">from<\/span> server\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\u90a3\u500b URL\uff1a<code>ssh:&lt;host&gt;:&lt;port&gt;&lt;host&gt;<\/code>\u2014\u2014port \u8ddf host \u9ecf\u5728\u4e00\u8d77\u4e86\uff0c\u770b\u8d77\u4f86\u50cf dockerode \u5728\u7d44 SSH URL \u6642\u7684 bug\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u70ba\u4ec0\u9ebc\u6703\u58de<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6316\u4e86 Dokploy \u6e90\u78bc\u5f8c\u767c\u73fe\u57f7\u884c\u6d41\u7a0b\u662f\uff1a<\/p>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">schedule<\/span><span class=\"hljs-selector-class\">.runManually<\/span>\n  \u2192 <span class=\"hljs-selector-tag\">runCommand<\/span>\n    \u2192 <span class=\"hljs-selector-tag\">getComposeContainer<\/span>(<span class=\"hljs-selector-tag\">compose<\/span>, <span class=\"hljs-selector-tag\">serviceName<\/span>)\n      \u2192 <span class=\"hljs-selector-tag\">getRemoteDocker<\/span>(<span class=\"hljs-selector-tag\">serverId<\/span>)\n        \u2192 <span class=\"hljs-selector-tag\">new<\/span> <span class=\"hljs-selector-tag\">Dockerode<\/span>({ <span class=\"hljs-attribute\">protocol<\/span>: <span class=\"hljs-string\">\"ssh\"<\/span>, host, port, username, sshOptions })\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><code>getComposeContainer()<\/code> \u70ba\u4e86\u62ff container ID\uff0c\u7528 <strong>dockerode \u7684 SSH protocol<\/strong> \u76f4\u63a5\u9023\u9060\u7aef docker daemon\u3002\u800c dockerode \u7684 SSH protocol \u5728\u73fe\u884c\u7248\u672c\u6709 URL \u7d44\u6210 bug\uff0c\u9023\u4e0d\u4e0a \u2192 <code>No response from server<\/code>\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c0d\u7167\u4e4b\u4e0b\uff0c\u4e0b\u5217\u5169\u689d\u8def\u5b8c\u5168\u6c92\u554f\u984c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>scheduleType=server<\/code> \u7684\u57f7\u884c\u8def\u5f91 \u2192 \u8d70 <code>execAsyncRemote()<\/code>\uff08\u7d14 ssh2 spawn shell\uff09<\/li>\n\n\n<li>Dokploy UI \u7684 container list \u2192 \u8d70 <code>docker ps<\/code> over SSH\uff08\u4e5f\u662f\u7d14 ssh2\uff09<\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u554f\u984c\u53ea\u51fa\u5728\u300cdockerode \u900f\u904e SSH \u76f4\u9023 docker daemon\u300d\u9019\u689d\u8def\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7e5e\u904e\u65b9\u6cd5\uff1a\u6539\u7528 <code>scheduleType=server<\/code> + script<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u8981\u8b93 Dokploy \u7528 dockerode SSH \u627e container\uff0c\u81ea\u5df1\u5728 script \u88e1\u547c\u53eb <code>docker exec<\/code> \u5c31\u597d\uff1a<\/p>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-meta\">#!\/bin\/bash<\/span>\n<span class=\"hljs-keyword\">set<\/span> -e\ndocker exec myapp-postgres-1 psql -U myuser -d mydb -c \"VACUUM ANALYZE;\"\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">\u5c0d\u61c9\u7684 schedule \u8a2d\u5b9a\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>\u6b04\u4f4d<\/th>\n<th>\u503c<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>scheduleType<\/code><\/td>\n<td><code>server<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>serverId<\/code><\/td>\n<td>\u4f60\u7684\u9060\u7aef server ID<\/td>\n<\/tr>\n<tr>\n<td><code>composeId<\/code><\/td>\n<td>\uff08\u7a7a\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>serviceName<\/code><\/td>\n<td>\uff08\u7a7a\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>script<\/code><\/td>\n<td>\u4e0a\u9762\u90a3\u6bb5 bash<\/td>\n<\/tr>\n<tr>\n<td><code>cronExpression<\/code><\/td>\n<td><code>0 3 * * 0<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dokploy \u6703\u628a\u9019\u4efd script \u5beb\u5230\u9060\u7aef server \u7684 <code>\/etc\/dokploy\/schedules\/&lt;appName&gt;\/script.sh<\/code>\uff0ccron \u89f8\u767c\u6642 SSH \u904e\u53bb <code>bash script.sh<\/code>\u3002\u57f7\u884c log \u5728\u540c\u500b\u76ee\u9304\u4e0b\u7684 <code>*.log<\/code>\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7528 MCP \/ API \u600e\u9ebc\u5efa<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4f60\u7528 Dokploy MCP \u6216 API \u5efa\uff08\u4e0d\u5f9e UI\uff09\uff0c\u547c\u53eb <code>schedule-create<\/code> \u6642\u6ce8\u610f\uff1a<\/p>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JSON \/ JSON with Comments\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json\">{\n  <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"DB Vacuum\"<\/span>,\n  <span class=\"hljs-attr\">\"cronExpression\"<\/span>: <span class=\"hljs-string\">\"0 3 * * 0\"<\/span>,\n  <span class=\"hljs-attr\">\"scheduleType\"<\/span>: <span class=\"hljs-string\">\"server\"<\/span>,\n  <span class=\"hljs-attr\">\"serverId\"<\/span>: <span class=\"hljs-string\">\"&lt;your server id&gt;\"<\/span>,\n  <span class=\"hljs-attr\">\"script\"<\/span>: <span class=\"hljs-string\">\"#!\/bin\/bash\\nset -e\\ndocker exec myapp-postgres-1 psql -U myuser -d mydb -c \\\"VACUUM ANALYZE;\\\"\\n\"<\/span>,\n  <span class=\"hljs-attr\">\"shellType\"<\/span>: <span class=\"hljs-string\">\"bash\"<\/span>,\n  <span class=\"hljs-attr\">\"enabled\"<\/span>: <span class=\"hljs-literal\">true<\/span>,\n  <span class=\"hljs-attr\">\"command\"<\/span>: <span class=\"hljs-string\">\"\"<\/span>\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON with Comments<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><code>command<\/code> \u6b04\u4f4d\u7d66 server-type \u7528\u4e0d\u5230\uff0c\u4f46 schema \u53ef\u80fd\u8981\u6c42\u586b\u5b57\u4e32\uff0c\u7d66\u7a7a\u5b57\u4e32\u5373\u53ef\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">UI \u4f4d\u7f6e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\uff1a\u6539\u6210 <code>scheduleType=server<\/code> \u5f8c\uff0c\u9019\u7b46 schedule <strong>\u4e0d\u6703<\/strong>\u51fa\u73fe\u5728\u539f\u672c compose service \u9801\u9762\u7684 Schedules tab\uff0c\u800c\u662f\u5728\uff1a<\/p>\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><span><code class=\"hljs\">Settings \u2192 Servers \u2192 \u4f60\u7684 server \u2192 Schedules tab\n<\/code><\/span><\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u70ba\u5b83\u73fe\u5728\u639b\u5728 server \u5e95\u4e0b\u3001\u4e0d\u639b\u5728 service \u5e95\u4e0b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5c0f\u7d50<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Dokploy \u4e09\u500b tab \u5b8c\u5168\u7368\u7acb\uff1a<strong>Backups<\/strong> \u5099 DB\u3001<strong>Volume Backups<\/strong> \u5099\u6a94\u6848\u3001<strong>Schedules<\/strong> \u8dd1 cron \u6307\u4ee4\u3002<\/li>\n\n\n<li>Backups \u7684\u6392\u7a0b<strong>\u5beb\u5728 Backup \u81ea\u5df1<\/strong>\uff0c\u4e0d\u662f Schedules tab\u3002<\/li>\n\n\n<li><code>scheduleType=compose<\/code> \u5c0d\u9060\u7aef server \u6703\u8e29 dockerode SSH bug\uff0c<strong>\u6539\u7528 <code>scheduleType=server<\/code> + script \u88e1 <code>docker exec<\/code><\/strong> \u5c31\u597d\u3002<\/li>\n\n\n<li>\u672c\u6a5f dokploy\uff08service \u8dd1\u5728 dokploy \u81ea\u5df1\u6a5f\u5668\u4e0a\uff09\u7684 compose-type schedule \u6c92\u9019\u554f\u984c\uff1b\u53ea\u6709\u8de8\u6a5f\u5668\u624d\u6703\u8e29\u3002<\/li>\n\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e0c\u671b\u9019\u7bc7\u80fd\u7701\u4e0b\u5f8c\u4eba\u6316\u6e90\u78bc\u7684\u6642\u9593\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u65b0\u624b\u525b\u63a5\u89f8 Dokploy \u5bb9\u6613\u88ab Backups \/ Schedules \/ Volume Backups \u4e09\u500b tab \u641e\u6df7\u3002\u672c\u6587\u91d0\u6e05\u5dee\u7570\u3001\u8209\u4f8b Schedules \u80fd\u505a\u4ec0\u9ebc\uff0c\u4e26\u8a18\u9304\u4e00\u500b\u5728\u9060\u7aef server \u4e0a\u8e29\u5230\u7684\u96f7\u8207\u7e5e\u904e\u65b9\u6cd5\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rolpb_likes":0,"footnotes":""},"categories":[801,809,389],"tags":[825,138,802,824,826,338],"class_list":["post-810","post","type-post","status-publish","format-standard","hentry","category-dokploy","category-809","category-389","tag-cron","tag-docker","tag-dokploy","tag-schedule","tag-self-hosted","tag-ssh"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/posts\/810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/comments?post=810"}],"version-history":[{"count":0,"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/posts\/810\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/media?parent=810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/categories?post=810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.itsmygo.uk\/wordpress\/wp-json\/wp\/v2\/tags?post=810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}