{"id":35748,"date":"2026-01-11T17:30:43","date_gmt":"2026-01-11T10:30:43","guid":{"rendered":"https:\/\/dps.media\/giai-phong-du-lieu-huong-dan-di-doi-metabase-docker-volume-sang-vps-moi-2026\/"},"modified":"2026-01-11T17:33:43","modified_gmt":"2026-01-11T10:33:43","slug":"giai-phong-du-lieu-huong-dan-di-doi-metabase-docker-volume-sang-vps-moi-2","status":"publish","type":"post","link":"https:\/\/dps.media\/zh\/giai-phong-du-lieu-huong-dan-di-doi-metabase-docker-volume-sang-vps-moi-2\/","title":{"rendered":"\u6570\u636e\u89e3\u653e\uff1a\u8fc1\u79fb Metabase (Docker Volume) \u5230\u65b0 VPS 2026 \u6307\u5357"},"content":{"rendered":"<p class=\"wp-block-paragraph\">\u4f60\u662f\u5426\u66fe\u7ecf\u8fc1\u79fb\u8fc7\u4e00\u4e2a\u590d\u6742\u7684 Supabase \u7cfb\u7edf\uff0c\u73b0\u5728\u662f\u65f6\u5019\u9762\u5bf9\u4e0b\u4e00\u4e2a\u6311\u6218\uff1a <strong>Metabase<\/strong>. \u3002\u5982\u679c Supabase \u5c06\u6570\u636e\u660e\u786e\u5b58\u50a8\u5728 bind-mount \u6587\u4ef6\u5939\u4e2d\uff0c\u90a3\u4e48 Metabase \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u901a\u5e38\u5c06\u6570\u636e\u5c0f\u5fc3\u9690\u85cf\u5728 <strong>Docker \u5377<\/strong> \u9690\u5f62\u4e4b\u4e2d\u3002\u8fd9\u4f7f\u5f97\u5907\u4efd\u6216\u8fc1\u79fb\u5230\u65b0 VPS \u5bf9\u4e8e\u975e\u4e13\u4e1a\u4eba\u58eb\u6765\u8bf4\u53d8\u5f97\u66f4\u52a0\u201c\u68d8\u624b\u201d\u3002.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u672c\u6587\u4e2d\uff0c\u6211\u4eec\u5c06\u4e00\u8d77\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff1a\u5982\u4f55\u4ece\u65e7 VPS \u6df1\u5904\u9690\u85cf\u7684 Docker Volume \u4e2d\u201c\u62d4\u51fa\u201d\u6574\u4e2a Metabase \u6570\u636e\uff08\u56fe\u8868\u3001\u4eea\u8868\u677f\u3001\u7528\u6237\uff09\uff0c\u8fc1\u79fb\u5230\u4e00\u4e2a\u5168\u65b0\u7684 VPS\uff0c\u7279\u522b\u662f\u5c06\u5176\u8f6c\u6362\u4e3a\u6587\u4ef6\u5939 (Bind Mount) \u5f62\u5f0f\uff0c\u4ee5\u4fbf\u4ee5\u540e\u66f4\u5bb9\u6613\u6c38\u4e45\u7ba1\u7406\u3002.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u95ee\u9898\uff1a \u201c\u9690\u5f62\u201d\u6570\u636e (Docker Volumes)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u4f60\u4f7f\u7528\u547d\u4ee4\u5b89\u88c5 Metabase \u65f6 <code data-no-translation=\"\">docker run<\/code> \u6216\u8005\u7f51\u7edc\u4e0a\u7684 compose \u793a\u4f8b\u6587\u4ef6\uff0c\u6570\u636e\u901a\u5e38\u5b58\u50a8\u5728 Docker Volume (Managed Volume) \u4e2d\u3002\u4f60\u4e0d\u4f1a\u5728 <code data-no-translation=\"\">ls \/opt<\/code> \u8fd8\u662f <code data-no-translation=\"\">ls \/home<\/code>. \u770b\u5230\u5b83\u3002\u5b83\u6df1\u85cf\u5728 <code data-no-translation=\"\">\/var\/lib\/docker\/volumes\/...<\/code>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/dps.media\/wp-content\/uploads\/mcp\/2026\/01\/volume_to_folder_concept_1768127348760.jpg\" alt=\"\u5c06Docker Volume\u8f6c\u6362\u4e3a\u672c\u5730\u6587\u4ef6\u5939\" title=\"\"><figcaption>\u6218\u672f\uff1a\u4ece\u5c01\u95ed Volume \u8f6c\u5411\u5f00\u653e\u6587\u4ef6\u5939<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5728\u4f60\u60f3\u8981\u5907\u4efd\uff08\u5fc5\u987b\u4f7f\u7528\u4e13\u7528\u7684 volume \u5907\u4efd\u547d\u4ee4\uff09\u6216\u76f4\u63a5\u4fee\u6539\u914d\u7f6e\u65f6\u4f1a\u9020\u6210\u56f0\u96be\u3002\u6211\u4eec\u4eca\u5929\u7684\u6218\u672f\u662f\uff1a <strong>\u91ca\u653e\u6570\u636e<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6b65\u9aa41\uff1a \u201c\u4fa6\u63a2\u201d Docker \u2013 \u67e5\u627e\u6570\u636e &amp; \u5bc6\u7801<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u8fc1\u79fb\u4e4b\u524d\uff0c\u4f60\u5fc5\u987b\u77e5\u9053\u6570\u636e\u4f4d\u4e8e\u4f55\u5904\u4ee5\u53ca\u6253\u5f00\u5b83\u7684\u94a5\u5319\uff08\u5bc6\u7801\uff09\u662f\u4ec0\u4e48\u3002\u5f88\u591a\u60c5\u51b5\u4e0b\u8fc1\u79fb\u5b8c\u6210\u540e\u5fd8\u8bb0\u4e86\u65e7\u6570\u636e\u5e93\u5bc6\u7801\uff0c\u5bfc\u81f4\u65b0 Metabase \u65e0\u6cd5\u8bfb\u53d6\u6570\u636e\u3002.<\/p>\n\n\n<p class=\"wp-block-paragraph\">\u5728 <strong>\u65e7 VPS<\/strong>, \u8bf7\u4f7f\u7528\u547d\u4ee4 <code data-no-translation=\"\">docker inspect<\/code> \u6765\u67e5\u770b\u4fe1\u606f\uff1a<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/dps.media\/wp-content\/uploads\/mcp\/2026\/01\/docker_inspect_secrets_1768127332437.jpg\" alt=\"\ud83e\udd16\" title=\"\"><figcaption>\u5728\u73af\u5883\u53d8\u91cf\u4e2d\u67e5\u627e\u9690\u85cf\u7684\u6570\u636e\u5e93\u5bc6\u7801<\/figcaption><\/figure>\n<\/div>\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\"># 1. T\u00ecm m\u1eadt kh\u1ea9u Database (Quan tr\u1ecdng nh\u1ea5t!)\ndocker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' metabase_container_name | grep MB_DB_PASS\n\n# 2. X\u00e1c \u0111\u1ecbnh ch\u00ednh x\u00e1c \u0111\u01b0\u1eddng d\u1eabn Volume\ndocker inspect -f '{{ json .Mounts }}' metabase_db_container_name<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf7\u8bb0\u5f55\u4e0b\u5bc6\u7801\u5b57\u7b26\u4e32\uff08\u4f8b\u5982\uff1a <code data-no-translation=\"\">ExAmPlE_P@ssw0rd...<\/code>) \u548c\u6e90 volume \u8def\u5f84\uff08\u4f8b\u5982\uff1a <code data-no-translation=\"\">\/var\/lib\/docker\/volumes\/metabase_data\/_data<\/code>\uff09\u3002\u6211\u4eec\u5c06\u5728\u540e\u7eed\u6b65\u9aa4\u4e2d\u4f7f\u7528\u5b83\u4eec\u3002.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6b65\u9aa42\uff1a Rsync \u2013 \u6570\u636e\u7684\u5927\u8fc1\u5f99<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u786e\u5b9a\u4e86\u65e7VPS\u4e0a\u6570\u636e\u7684\u201c\u5bb6\u5ead\u5730\u5740\u201d\u540e\uff0c\u6211\u4eec\u5c06\u4f7f\u7528 <code data-no-translation=\"\">rsync<\/code> \u76f4\u63a5\u5c06\u5176\u4f20\u8f93\u5230\u65b0VPS\u3002\u5728\u65b0VPS\u4e0a\uff0c\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2a\u5408\u9002\u7684\u6587\u4ef6\u5939\u6765\u63a5\u6536\u5b83\u3002.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5728\u65b0VPS\u4e0a\uff1a<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">mkdir -p \/opt\/metabase\/pgdata<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5728\u65e7VPS\u4e0a\uff08\u8fd0\u884crsync\u547d\u4ee4\uff09\uff1a<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\"># L\u01b0u \u00fd \u0111\u01b0\u1eddng d\u1eabn ngu\u1ed3n l\u1ea5y t\u1eeb b\u01b0\u1edbc 1\n# IP_VPS_MOI: Thay b\u1eb1ng IP server m\u1edbi\n\nrsync -avzP \/var\/lib\/docker\/volumes\/metabase_data\/_data\/ root@IP_VPS_MOI:\/opt\/metabase\/pgdata\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u65f6\uff0c\u60a8\u5b9d\u8d35\u7684\u6570\u636e\u5df2\u5b89\u5168\u5730\u5b58\u653e\u5728\u6587\u4ef6\u5939\u4e2d <code data-no-translation=\"\">\/opt\/metabase\/pgdata<\/code> \u5728\u65b0\u670d\u52a1\u5668\u4e0a\u3002\u5b83\u5df2\u6210\u4e3a\u60a8\u53ef\u4ee5\u770b\u5230\u3001\u590d\u5236\u548c\u5907\u4efd\u7684\u7269\u7406\u6587\u4ef6\uff01<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6b65\u9aa43\uff1a \u642d\u5efa\u65b0\u5bb6 (Docker Compose \u5e72\u51c0\u8bbe\u7f6e)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0e\u5176\u91cd\u590d\u4f7f\u7528\u65e7\u7684\u6742\u4e71\u914d\u7f6e\uff0c\u6211\u4eec\u5c06\u7f16\u5199\u4e00\u4e2a <code data-no-translation=\"\">docker-compose.yml<\/code> \u65b0\u6587\u4ef6\uff0c\u66f4\u5e72\u51c0\u3001\u66f4\u6807\u51c6\u3002\u8fd9\u4e2a\u6587\u4ef6\u5c06\u8fde\u63a5Metabase\u5e94\u7528\u7a0b\u5e8f\u4e0e\u6211\u4eec\u521a\u521a\u8fc1\u79fb\u7684\u6570\u636e\u5e93\u6570\u636e\u3002.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/dps.media\/wp-content\/uploads\/mcp\/2026\/01\/metabase_compose_structure_1768127364396.jpg\" alt=\"\u65b0 Docker Compose Metabase \u7ed3\u6784\" title=\"\"><figcaption>\u8fde\u63a5\u6a21\u578b\uff1aApp -&gt; Database -&gt; Local Folder<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u6587\u4ef6 <code data-no-translation=\"\">\/opt\/metabase\/docker-compose.yml<\/code> \u5185\u5bb9\u5982\u4e0b\uff08\u8bb0\u5f97\u5c06PASSWORD\u66ff\u6362\u4e3a\u6b65\u9aa41\u4e2d\u627e\u5230\u7684\u5bc6\u7801\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">version: '3.9'\nservices:\n  metabase:\n    image: metabase\/metabase:latest\n    container_name: metabase\n    restart: unless-stopped\n    ports:\n      - \"3000:3000\"\n    environment:\n      MB_DB_TYPE: postgres\n      MB_DB_DBNAME: metabase\n      MB_DB_PORT: 5432\n      MB_DB_USER: metabase\n      MB_DB_PASS: YOUR_SECRET_PASSWORD_HERE\n      MB_DB_HOST: metabase-db\n    depends_on:\n      - metabase-db\n\n  metabase-db:\n    image: postgres:15\n    container_name: metabase-db\n    restart: unless-stopped\n    environment:\n      POSTGRES_USER: metabase\n      POSTGRES_DB: metabase\n      POSTGRES_PASSWORD: YOUR_SECRET_PASSWORD_HERE\n    volumes:\n      # K\u1ebeT N\u1ed0I QUAN TR\u1eccNG NH\u1ea4T:\n      # Mount folder d\u1eef li\u1ec7u v\u1eeba rsync v\u00e0o trong database\n      - .\/pgdata:\/var\/lib\/postgresql\/data<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u542f\u52a8\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\"><code data-no-translation=\"\">docker compose up -d<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u6b65\u9aa44\uff1a \u914d\u7f6e\u57df\u540d &amp; SSL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528 <strong>Nginx Proxy Manager<\/strong> \uff08\u60a8\u5df2\u5728\u4e4b\u524d\u7684\u6307\u5357\u4e2d\u5b89\u88c5\uff09\u4ee5\u5b89\u5168\u5730\u5c06Metabase\u516c\u5f00\u5230\u4e92\u8054\u7f51\u3002.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u57df\u540d\uff1a<\/strong> <code data-no-translation=\"\">data.your-domain.com<\/code><\/li>\n<li><strong>\u8f6c\u53d1 IP:<\/strong> <code data-no-translation=\"\">172.17.0.1<\/code><\/li>\n<li><strong>\u8f6c\u53d1\u7aef\u53e3:<\/strong> <code data-no-translation=\"\">3000<\/code><\/li>\n<li><strong>SSL:<\/strong> Let\u2019s Encrypt (Force SSL)<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/dps.media\/wp-content\/uploads\/mcp\/2026\/01\/metabase_success_dashboard_1768127381275.jpg\" alt=\"Metabase \u5728\u65b0 VPS \u4e0a\u6210\u529f\u8fd0\u884c\" title=\"\"><figcaption>\u7cfb\u7edf\u8fd0\u884c\u5b8c\u7f8e\uff0c\u4eea\u8868\u677f\u6570\u636e\u5b8c\u597d\u65e0\u635f<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">\u603b\u7ed3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ece Docker \u7ba1\u7406\u5377\u8fc1\u79fb\u5230\u7ed1\u5b9a\u6302\u8f7d\uff08\u6587\u4ef6\u5939\uff09\u4e0d\u4ec5\u80fd\u5e2e\u52a9\u4f60\u6210\u529f\u5b8c\u6210\u8fc1\u79fb\uff0c\u800c\u4e14\u4e5f\u662f\u7cfb\u7edf\u7ba1\u7406\u7684\u4e00\u6b21\u91cd\u5927\u5347\u7ea7\u3002\u4ece\u4eca\u4ee5\u540e\uff0c\u5907\u4efd Metabase \u6570\u636e\u53ea\u9700\u7b80\u5355\u5730\u590d\u5236\u6587\u4ef6\u5939 <code data-no-translation=\"\">\/opt\/metabase\/pgdata<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u795d\u60a8\u5728\u65b0\u5bb6\u4e2d\u62e5\u6709\u5f3a\u5927\u7a33\u5b9a\u7684\u5546\u4e1a\u667a\u80fd\u7cfb\u7edf\uff01<\/p>","protected":false},"excerpt":{"rendered":"<p>\u4f60\u66fe\u7ecf\u8fc1\u79fb\u8fc7\u4e00\u4e2a\u590d\u6742\u7684 Supabase \u7cfb\u7edf\uff0c\u73b0\u5728\u662f\u65f6\u5019\u9762\u5bf9\u4e0b\u4e00\u4e2a\u6311\u6218\uff1aMetabase\u3002\u5982\u679c Supabase \u5c06\u6570\u636e\u6e05\u6670\u5730\u5b58\u50a8\u5728 bind-mount \u6587\u4ef6\u5939\u4e2d\uff0c\u90a3\u4e48 Metabase \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u901a\u5e38\u5c06\u6570\u636e\u5c0f\u5fc3\u5730\u9690\u85cf\u5728\u65e0\u5f62\u7684 Docker Volumes \u4e2d\u3002\u8fd9\u4f7f\u5f97 [\u2026]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-35748","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"acf":[],"rankmath_keywords":{"primary":"","secondary":[""]},"yoast_keywords":{"primary":"","secondary":[]},"yoast_focuskw":"","rankmath_focuskw":"","seo_keywords":{"primary":"","secondary":[""]},"_links":{"self":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/35748","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/comments?post=35748"}],"version-history":[{"count":0,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/posts\/35748\/revisions"}],"wp:attachment":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/media?parent=35748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/categories?post=35748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/tags?post=35748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}