PageSourceSearch

https://thingsgateway.cn/assets/js/7d22394d.c553e7ca.js

js thingsgateway.cn collected 2026-10-07 11:25:18 UTC 47,892 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkthingsgateway=self.webpackChunkthingsgateway||[]).push([[3730],{2497:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>r,default:()=>x,frontMatter:()=>i,metadata:()=>c,toc:()=>a});var l=s(4848),d=s(8453);s(6025),s(9536),s(7288);const i={id:403,title:"Docker\u90e8\u7f72"},r=void 0,c={id:"403",title:"Docker\u90e8\u7f72",description:"\u5982\u679c\u9700\u8981\u7cbe\u7b80\u53d1\u5e03\u540e\u7684\u6587\u4ef6\uff0c\u4e5f\u5c31\u662f\u5220\u9664\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\uff0c\u53ef\u4ee5\u7f16\u8f91 Web \u9879\u76ee\u7684 .csproj \u5e76\u6dfb\u52a0 en-US\uff0c\u5982\uff1a",source:"@site/docs/Docker\u90e8\u7f72.mdx",sourceDirName:".",slug:"/403",permalink:"/docs/403",draft:!1,unlisted:!1,editUrl:"https://gitee.com/ThingsGateway/Doc/tree/master/docs/Docker\u90e8\u7f72.mdx",tags:[],version:"current",lastUpdatedBy:"Diego",lastUpdatedAt:1770127297e3,frontMatter:{id:"403",title:"Docker\u90e8\u7f72"},sidebar:"docs",previous:{title:"iis\u90e8\u7f72",permalink:"/docs/402"},next:{title:"linux\u670d\u52a1\u90e8\u7f72",permalink:"/docs/404"}},h={},a=[{value:"\u4e00\u3001Docker\u90e8\u7f72\u6982\u8ff0",id:"\u4e00docker\u90e8\u7f72\u6982\u8ff0",level:2},{value:"1.1 \u90e8\u7f72\u65b9\u5f0f",id:"11-\u90e8\u7f72\u65b9\u5f0f",level:3},{value:"1.2 \u4f18\u52bf",id:"12-\u4f18\u52bf",level:3},{value:"\u4e8c\u3001\u53d1\u5e03\u540e\u6784\u5efa\u65b9\u5f0f",id:"\u4e8c\u53d1\u5e03\u540e\u6784\u5efa\u65b9\u5f0f",level:2},{value:"2.1 \u7f16\u5199 Dockerfile",id:"21-\u7f16\u5199-dockerfile",level:3},{value:"2.2 Dockerfile \u53c2\u6570\u8bf4\u660e",id:"22-dockerfile-\u53c2\u6570\u8bf4\u660e",level:3},{value:"2.3 \u62f7\u8d1d Dockerfile",id:"23-\u62f7\u8d1d-dockerfile",level:3},{value:"2.4 \u6784\u5efa Docker \u955c\u50cf",id:"24-\u6784\u5efa-docker-\u955c\u50cf",level:3},{value:"2.5 \u542f\u52a8\u5bb9\u5668",id:"25-\u542f\u52a8\u5bb9\u5668",level:3},{value:"\u53c2\u6570\u8bf4\u660e",id:"\u53c2\u6570\u8bf4\u660e",level:4},{value:"\u4e09\u3001Docker Compose \u90e8\u7f72",id:"\u4e09docker-compose-\u90e8\u7f72",level:2},{value:"3.1 Docker Compose \u7b80\u4ecb",id:"31-docker-compose-\u7b80\u4ecb",level:3},{value:"3.2 \u7f16\u5199 docker-compose.yml",id:"32-\u7f16\u5199-docker-composeyml",level:3},{value:"3.3 docker-compose.yml \u53c2\u6570\u8bf4\u660e",id:"33-docker-composeyml-\u53c2\u6570\u8bf4\u660e",level:3},{value:"3.4 \u542f\u52a8\u670d\u52a1",id:"34-\u542f\u52a8\u670d\u52a1",level:3},{value:"3.5 \u505c\u6b62\u670d\u52a1",id:"35-\u505c\u6b62\u670d\u52a1",level:3},{value:"3.6 \u67e5\u770b\u65e5\u5fd7",id:"36-\u67e5\u770b\u65e5\u5fd7",level:3},{value:"\u56db\u3001\u6570\u636e\u6301\u4e45\u5316\u914d\u7f6e",id:"\u56db\u6570\u636e\u6301\u4e45\u5316\u914d\u7f6e",level:2},{value:"4.1 \u6570\u636e\u5377\u6302\u8f7d",id:"41-\u6570\u636e\u5377\u6302\u8f7d",level:3},{value:"4.2 \u6302\u8f7d\u76ee\u5f55\u8bf4\u660e",id:"42-\u6302\u8f7d\u76ee\u5f55\u8bf4\u660e",level:3},{value:"4.3 \u6743\u9650\u914d\u7f6e",id:"43-\u6743\u9650\u914d\u7f6e",level:3},{value:"\u4e94\u3001\u7f51\u7edc\u914d\u7f6e",id:"\u4e94\u7f51\u7edc\u914d\u7f6e",level:2},{value:"5.1 \u81ea\u5b9a\u4e49\u7f51\u7edc",id:"51-\u81ea\u5b9a\u4e49\u7f51\u7edc",level:3},{value:"5.2 \u8fde\u63a5\u5230\u7f51\u7edc",id:"52-\u8fde\u63a5\u5230\u7f51\u7edc",level:3},{value:"5.3 \u7f51\u7edc\u6a21\u5f0f",id:"53-\u7f51\u7edc\u6a21\u5f0f",level:3},{value:"\u516d\u3001\u65e5\u5fd7\u7ba1\u7406",id:"\u516d\u65e5\u5fd7\u7ba1\u7406",level:2},{value:"6.1 \u67e5\u770b\u5bb9\u5668\u65e5\u5fd7",id:"61-\u67e5\u770b\u5bb9\u5668\u65e5\u5fd7",level:3},{value:"6.2 \u65e5\u5fd7\u914d\u7f6e",id:"62-\u65e5\u5fd7\u914d\u7f6e",level:3},{value:"6.3 \u65e5\u5fd7\u8f6e\u8f6c",id:"63-\u65e5\u5fd7\u8f6e\u8f6c",level:3},{value:"\u4e03\u3001\u6027\u80fd\u4f18\u5316",id:"\u4e03\u6027\u80fd\u4f18\u5316",level:2},{value:"7.1 \u8d44\u6e90\u9650\u5236",id:"71-\u8d44\u6e90\u9650\u5236",level:3},{value:"7.2 \u8d44\u6e90\u53c2\u6570\u8bf4\u660e",id:"72-\u8d44\u6e90\u53c2\u6570\u8bf4\u660e",level:3},{value:"7.3 \u955c\u50cf\u4f18\u5316",id:"73-\u955c\u50cf\u4f18\u5316",level:3},{value:"\u4f7f\u7528\u591a\u9636\u6bb5\u6784\u5efa",id:"\u4f7f\u7528\u591a\u9636\u6bb5\u6784\u5efa",level:4},{value:"\u4f7f\u7528 Alpine \u955c\u50cf",id:"\u4f7f\u7528-alpine-\u955c\u50cf",level:4},{value:"\u516b\u3001\u5b89\u5168\u914d\u7f6e",id:"\u516b\u5b89\u5168\u914d\u7f6e",level:2},{value:"8.1 \u975e root \u7528\u6237\u8fd0\u884c",id:"81-\u975e-root-\u7528\u6237\u8fd0\u884c",level:3},{value:"8.2 \u53ea\u8bfb\u6587\u4ef6\u7cfb\u7edf",id:"82-\u53ea\u8bfb\u6587\u4ef6\u7cfb\u7edf",level:3},{value:"8.3 \u5b89\u5168\u626b\u63cf",id:"83-\u5b89\u5168\u626b\u63cf",level:3},{value:"\u4e5d\u3001\u5e38\u89c1\u95ee\u9898\u6392\u67e5",id:"\u4e5d\u5e38\u89c1\u95ee\u9898\u6392\u67e5",level:2},{value:"9.1 \u5bb9\u5668\u65e0\u6cd5\u542f\u52a8",id:"91-\u5bb9\u5668\u65e0\u6cd5\u542f\u52a8",level:3},{value:"9.2 \u6570\u636e\u4e22\u5931",id:"92-\u6570\u636e\u4e22\u5931",level:3},{value:"9.3 \u6027\u80fd\u95ee\u9898",id:"93-\u6027\u80fd\u95ee\u9898",level:3},{value:"9.4 \u7f51\u7edc\u8fde\u63a5\u95ee\u9898",id:"94-\u7f51\u7edc\u8fde\u63a5\u95ee\u9898",level:3},{value:"\u5341\u3001\u5907\u4efd\u4e0e\u6062\u590d",id:"\u5341\u5907\u4efd\u4e0e\u6062\u590d",level:2},{value:"10.1 \u6570\u636e\u5907\u4efd",id:"101-\u6570\u636e\u5907\u4efd",level:3},{value:"10.2 \u6570\u636e\u6062\u590d",id:"102-\u6570\u636e\u6062\u590d",level:3},{value:"10.3 \u955c\u50cf\u5bfc\u51fa",id:"103-\u955c\u50cf\u5bfc\u51fa",level:3},{value:"10.4 \u955c\u50cf\u5bfc\u5165",id:"104-\u955c\u50cf\u5bfc\u5165",level:3},{value:"\u5341\u4e00\u3001\u76d1\u63a7\u4e0e\u7ef4\u62a4",id:"\u5341\u4e00\u76d1\u63a7\u4e0e\u7ef4\u62a4",level:2},{value:"11.1 \u5bb9\u5668\u76d1\u63a7",id:"111-\u5bb9\u5668\u76d1\u63a7",level:3},{value:"11.2 \u5bb9\u5668\u66f4\u65b0",id:"112-\u5bb9\u5668\u66f4\u65b0",level:3},{value:"11.3 \u5b9a\u671f\u7ef4\u62a4",id:"113-\u5b9a\u671f\u7ef4\u62a4",level:3},{value:"\u5341\u4e8c\u3001\u6700\u4f73\u5b9e\u8df5",id:"\u5341\u4e8c\u6700\u4f73\u5b9e\u8df5",level:2},{value:"12.1 \u955c\u50cf\u7ba1\u7406",id:"121-\u955c\u50cf\u7ba1\u7406",level:3},{value:"12.2 \u5bb9\u5668\u7ba1\u7406",id:"122-\u5bb9\u5668\u7ba1\u7406",level:3},{value:"12.3 \u6570\u636e\u7ba1\u7406",id:"123-\u6570\u636e\u7ba1\u7406",level:3},{value:"12.4 \u5b89\u5168\u7ba1\u7406",id:"124-\u5b89\u5168\u7ba1\u7406",level:3},{value:"12.5 \u65e5\u5fd7\u7ba1\u7406",id:"125-\u65e5\u5fd7\u7ba1\u7406",level:3},{value:"\u5341\u4e09\u3001\u5e38\u89c1\u95ee\u9898",id:"\u5341\u4e09\u5e38\u89c1\u95ee\u9898",level:2},{value:"Q1: \u5982\u4f55\u4fee\u6539\u5bb9\u5668\u7aef\u53e3\u6620\u5c04\uff1f",id:"q
11-\u5982\u4f55\u4fee\u6539\u5bb9\u5668\u7aef\u53e3\u6620\u5c04",level:3},{value:"Q2: \u5982\u4f55\u8fdb\u5165\u5bb9\u5668\u5185\u90e8\uff1f",id:"q2-\u5982\u4f55\u8fdb\u5165\u5bb9\u5668\u5185\u90e8",level:3},{value:"Q3: \u5982\u4f55\u67e5\u770b\u5bb9\u5668\u65e5\u5fd7\uff1f",id:"q3-\u5982\u4f55\u67e5\u770b\u5bb9\u5668\u65e5\u5fd7",level:3},{value:"Q4: \u5982\u4f55\u9650\u5236\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\uff1f",id:"q4-\u5982\u4f55\u9650\u5236\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528",level:3},{value:"Q5: \u5982\u4f55\u5b9e\u73b0\u5bb9\u5668\u81ea\u52a8\u91cd\u542f\uff1f",id:"q5-\u5982\u4f55\u5b9e\u73b0\u5bb9\u5668\u81ea\u52a8\u91cd\u542f",level:3},{value:"Q6: \u5982\u4f55\u5728\u5bb9\u5668\u4e2d\u4f7f\u7528\u4e3b\u673a\u7f51\u7edc\uff1f",id:"q6-\u5982\u4f55\u5728\u5bb9\u5668\u4e2d\u4f7f\u7528\u4e3b\u673a\u7f51\u7edc",level:3},{value:"Q7: \u5982\u4f55\u67e5\u770b\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\uff1f",id:"q7-\u5982\u4f55\u67e5\u770b\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5",level:3},{value:"Q8: \u5982\u4f55\u5bfc\u51fa\u548c\u5bfc\u5165\u955c\u50cf\uff1f",id:"q8-\u5982\u4f55\u5bfc\u51fa\u548c\u5bfc\u5165\u955c\u50cf",level:3},{value:"Q9: \u5982\u4f55\u6e05\u7406\u672a\u4f7f\u7528\u7684 Docker \u8d44\u6e90\uff1f",id:"q9-\u5982\u4f55\u6e05\u7406\u672a\u4f7f\u7528\u7684-docker-\u8d44\u6e90",level:3},{value:"Q10: \u5982\u4f55\u914d\u7f6e\u5bb9\u5668\u65f6\u533a\uff1f",id:"q
110-\u5982\u4f55\u914d\u7f6e\u5bb9\u5668\u65f6\u533a",level:3}];function t(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(n.admonition,{title:"\u7cbe\u7b80\u53d1\u5e03\u6587\u4ef6",type:"tip",children:[(0,l.jsxs)(n.p,{children:["\u5982\u679c\u9700\u8981\u7cbe\u7b80\u53d1\u5e03\u540e\u7684\u6587\u4ef6\uff0c\u4e5f\u5c31\u662f\u5220\u9664\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\uff0c\u53ef\u4ee5\u7f16\u8f91 Web \u9879\u76ee\u7684 ",(0,l.jsx)(n.code,{children:".csproj"})," \u5e76\u6dfb\u52a0 ",(0,l.jsx)(n.code,{children:"<SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>"}),"\uff0c\u5982\uff1a"]}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-cs",metastring:"showLineNumbers  {3}",children:"<PropertyGroup>\n  <TargetFramework>net6.0</TargetFramework>\n  <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>\n</PropertyGroup>\n"})}),(0,l.jsxs)(n.p,{children:["\u82e5\u65e0\u9700\u751f\u6210 ",(0,l.jsx)(n.code,{children:".pdb"})," \u6587\u4ef6\uff0c\u53ef\u4ee5\u7ee7\u7eed\u6dfb\u52a0\uff1a"]}),(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-cs",metastring:"showLineNumbers {2-3}",children:"<PropertyGroup>\n  <DebugType>none</DebugType>\n  <DebugSymbols>false</DebugSymbols>\n</PropertyGroup>\n"})})]}),"\n",(0,l.jsx)(n.h2,{id:"\u4e00docker\u90e8\u7f72\u6982\u8ff0",children:"\u4e00\u3001Docker\u90e8\u7f72\u6982\u8ff0"}),"\n",(0,l.jsx)(n.h3,{id:"11-\u90e8\u7f72\u65b9\u5f0f",children:"1.1 \u90e8\u7f72\u65b9\u5f0f"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728 ",(0,l.jsx)(n.code,{children:"Docker"})," \u4e2d\u90e8\u7f72 ThingsGateway \u6709\u4e24\u79cd\u65b9\u5f0f\uff1a"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u53d1\u5e03\u540e\u6784\u5efa"}),"\uff1a\u6b64\u65b9\u5f0f\u662f\u5148\u53d1\u5e03\u7f51\u7ad9\u540e\u518d\u6784\u5efa\u955c\u50cf\uff0c\u8fd9\u6837\u53ef\u4ee5\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u6784\u5efa\u5c42\uff0c\u800c\u4e14\u8fd8\u80fd\u7f29\u51cf\u955c\u50cf\u5927\u5c0f\u3002",(0,l.jsx)(n.strong,{children:"\uff08\u63a8\u8350\uff09"})]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u7f16\u8bd1+\u6784\u5efa+\u53d1\u5e03"}),"\uff1a\u4e5f\u5c31\u662f\u8bf4\u5728 ",(0,l.jsx)(n.code,{children:"Dockerfile"})," \u4e2d\u914d\u7f6e\u7f51\u7ad9\u4ece\u6784\u5efa\u5230\u53d1\u5e03\u7684\u5b8c\u6574\u8fc7\u7a0b\uff0c\u6b64\u65b9\u5f0f\u4f1a\u901f\u5ea6\u6162\uff0c\u800c\u4e14\u4f1a\u4ea7\u751f\u5197\u4f59\u5c42\uff0c\u589e\u52a0\u955c\u50cf\u5927\u5c0f\u3002"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"12-\u4f18\u52bf",children:"1.2 \u4f18\u52bf"}),"\n",(0,l.jsx)(n.p,{children:"\u4f7f\u7528 Docker \u90e8\u7f72 ThingsGateway \u5177\u6709\u4ee5\u4e0b\u4f18\u52bf\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u73af\u5883\u4e00\u81f4\u6027"}),"\uff1a\u786e\u4fdd\u5f00\u53d1\u3001\u6d4b\u8bd5\u548c\u751f\u4ea7\u73af\u5883\u7684\u4e00\u81f4\u6027"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u5feb\u901f\u90e8\u7f72"}),"\uff1a\u901a\u8fc7\u955c\u50cf\u5feb\u901f\u90e8\u7f72\u65b0\u5b9e\u4f8b"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u6613\u4e8e\u6269\u5c55"}),"\uff1a\u652f\u6301\u6c34\u5e73\u6269\u5c55\u548c\u8d1f\u8f7d\u5747\u8861"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u8d44\u6e90\u9694\u79bb"}),"\uff1a\u5bb9\u5668\u5316\u9694\u79bb\uff0c\u63d0\u9ad8\u7cfb\u7edf\u5b89\u5168\u6027"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"\u4fbf\u4e8e\u7ef4\u62a4"}),"\uff1a\u7edf\u4e00\u7684\u7ba1\u7406\u548c\u76d1\u63a7\u65b9\u5f0f"]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"\u4e8c\u53d1\u5e03\u540e\u6784\u5efa\u65b9\u5f0f",children:"\u4e8c\u3001\u53d1\u5e03\u540e\u6784\u5efa\u65b9\u5f0f"}),"\n",(0,l.jsx)(n.h3,{id:"21-\u7f16\u5199-dockerfile",children:"2.1 \u7f16\u5199 Dockerfile"}),"\n",(0,l.jsxs)(n.p,{children:["\u521b\u5efa ",(0,l.jsx)(n.code,{children:"Dockerfile"})," \u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-dockerfile",children:'FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base\nCOPY .  /app\nWORKDIR /app\nEXPOSE 80\n#linux\u5b89\u88c5\nRUN echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ sid main contrib non-free" > /etc/apt/sources.list\nRUN apt-get update && apt-get -y install libfontconfig1\nENTRYPOINT ["dotnet", "ThingsGateway.Server.dll","--urls","http://*:7200"]\n'})}),"\n",(0,l.jsx)(n.h3,{id:"22-dockerfile-\u53c2\u6570\u8bf4\u660e",children:"2.2 Dockerfile \u53c2\u6570\u8bf4\u660e"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"\u53c2\u6570"}),(0,l.jsx)(n.th,{children:"\u8bf4\u660e"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"FROM"})}),(0,l.jsx)(n.td,{children:"\u6307\u5b9a\u57fa\u7840\u955c\u50cf\uff0c\u4f7f\u7528 .NET 8.0 ASP.NET \u8fd0\u884c\u65f6"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"COPY"})}),(0,l.jsxs)(n.td,{children:["\u5c06\u53d1\u5e03\u6587\u4ef6\u590d\u5236\u5230\u5bb9\u5668\u4e2d\u7684 ",(0,l.jsx)(n.code,{children:"/app"})," \u76ee\u5f55"]})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"WORKDIR"})}),(0,l.jsxs)(n.td,{children:["\u8bbe\u7f6e\u5de5\u4f5c\u76ee\u5f55\u4e3a ",(0,l.jsx)(n.code,{children:"/app"})]})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"EXPOSE"})}),(0,l.jsx)(n.td,{children:"\u66b4\u9732\u5bb9\u5668\u7aef\u53e3 80"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"RUN"})}),(0,l.jsx)(n.td,{children:"\u5b89\u88c5\u5fc5\u8981\u7684\u7cfb\u7edf\u4f9d\u8d56\uff08\u5b57\u4f53\u914d\u7f6e\u5e93\uff09"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"ENTRYPOINT"})}),(0,l.jsx)(n.td,{children:"\u8bbe\u7f6e\u5bb9\u5668\u542f\u52a8\u
165f6\u6267\u884c\u7684\u547d\u4ee4"})]})]})]}),"\n",(0,l.jsxs)(n.admonition,{type:"tip",children:[(0,l.jsx)(n.mdxAdmonitionTitle,{children:(0,l.jsx)(n.code,{children:"\u63d0\u793a"})}),(0,l.jsxs)(n.p,{children:["git\u4ed3\u5e93\u4e2d\u5df2\u7ecf\u5305\u542b ",(0,l.jsx)(n.code,{children:"Dockerfile"})," \u6587\u4ef6"]})]}),"\n",(0,l.jsx)(n.h3,{id:"23-\u62f7\u8d1d-dockerfile",children:"2.3 \u62f7\u8d1d Dockerfile"}),"\n",(0,l.jsxs)(n.p,{children:["\u5c06\u7f16\u5199\u597d\u7684 ",(0,l.jsx)(n.code,{children:"Dockerfile"})," \u6587\u4ef6\uff08\u6ce8\u610f ",(0,l.jsx)(n.code,{children:"D"})," \u5927\u5199\uff09\u62f7\u8d1d\u5230\u53d1\u5e03\u7f51\u7ad9\u7684\u6839\u76ee\u5f55\u4e0b\u3002"]}),"\n",(0,l.jsx)(n.h3,{id:"24-\u6784\u5efa-docker-\u955c\u50cf",children:"2.4 \u6784\u5efa Docker \u955c\u50cf"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728\u7f51\u7ad9\u53d1\u5e03\u540e\u7684\u8def\u5f84\u6839\u76ee\u5f55\u4e0b\uff08\u5fc5\u987b\u542b ",(0,l.jsx)(n.code,{children:"Dockerfile"}),"\uff09\u6253\u5f00 ",(0,l.jsx)(n.code,{children:"CMD/PowerShell"})," \u6267\u884c\u6784\u5efa\u547d\u4ee4\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker build -t thingsgateway:1.0 .\n"})}),"\n",(0,l.jsx)(n.admonition,{title:"\u7279\u522b\u6ce8\u610f",type:"important",children:(0,l.jsxs)(n.p,{children:["\u547d\u4ee4\u672b\u5c3e\u7684 ",(0,l.jsx)(n.code,{children:"."})," \u4e0d\u80fd\u7701\u7565\uff0c\u8868\u793a\u4f7f\u7528\u5f53\u524d\u76ee\u5f55\u4f5c\u4e3a\u6784\u5efa\u4e0a\u4e0b\u6587"]})}),"\n",(0,l.jsx)(n.h3,{id:"25-\u542f\u52a8\u5bb9\u5668",children:"2.5 \u542f\u52a8\u5bb9\u5668"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway -p 5000:80 --restart=always -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h4,{id:"\u53c2\u6570\u8bf4\u660e",children:"\u53c2\u6570\u8bf4\u660e"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"\u53c2\u6570"}),(0,l.jsx)(n.th,{children:"\u8bf4\u660e"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"--name"})}),(0,l.jsx)(n.td,{children:"\u5bb9\u5668\u540d\u79f0"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"-p"})}),(0,l.jsx)(n.td,{children:"\u7aef\u53e3\u6620\u5c04\uff0c\u683c\u5f0f\uff1a\u4e3b\u673a\u7aef\u53e3:\u5bb9\u5668\u7aef\u53e3"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"--restart"})}),(0,l.jsxs)(n.td,{children:["\u91cd\u542f\u7b56\u7565\uff0c",(0,l.jsx)(n.code,{children:"always"})," \u8868\u793a\u81ea\u52a8\u91cd\u542f"]})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"-d"})}),(0,l.jsx)(n.td,{children:"\u540e\u53f0\u8fd0\u884c"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"thingsgateway:1.0"})}),(0,l.jsx)(n.td,{children:"\u955c\u50cf\u540d\u79f0\u548c\u7248\u672c"})]})]})]}),"\n",(0,l.jsxs)(n.admonition,{type:"caution",children:[(0,l.jsxs)(n.mdxAdmonitionTitle,{children:[(0,l.jsx)(n.code,{children:".NET8"})," \u4e2d ",(0,l.jsx)(n.code,{children:"80"})," \u7aef\u53e3\u95ee\u9898"]}),(0,l.jsxs)(n.p,{children:["\u5728\u4f7f\u7528 ",(0,l.jsx)(n.code,{children:".NET8"}),"\uff0c\u9ed8\u8ba4\u7684\u7aef\u53e3\u7531\u539f\u6765\u7684 ",(0,l.jsx)(n.code,{children:"80"})," \u7aef\u53e3\u53d8\u6210\u4e86 ",(0,l.jsx)(n.code,{children:"8080"}),"\u3002",(0,l.jsx)(n.a,{href:"https://learn.microsoft.com/zh-cn/dotnet/core/compatibility/containers/8.0/aspnet-port",children:"\u67e5\u770b\u76f8\u5173\u8bf4\u660e"})]})]}),"\n",(0,l.jsx)(n.h2,{id:"\u4e09docker-compose-\u90e8\u7f72",children:"\u4e09\u3001Docker Compose \u90e8\u7f72"}),"\n",(0,l.jsx)(n.h3,{id:"31-docker-compose-\u7b80\u4ecb",children:"3.1 Docker Compose \u7b80\u4ecb"}),"\n",(0,l.jsx)(n.p,{children:"Docker Compose \u662f\u4e00\u4e2a\u7528\u4e8e\u5b9a\u4e49\u548c\u8fd0\u884c\u591a\u5bb9\u5668 Docker \u5e94\u7528\u7a0b\u5e8f\u7684\u5de5\u5177\u3002\u901a\u8fc7 YAML \u6587\u4ef6\u914d\u7f6e\u5e94\u7528\u7a0b\u5e8f\u7684\u670d\u52a1\uff0c\u7136\u540e\u4f7f\u7528\u4e00\u4e2a\u547d\u4ee4\u521b\u5efa\u548c\u542f\u52a8\u
16240\u6709\u670d\u52a1\u3002"}),"\n",(0,l.jsx)(n.h3,{id:"32-\u7f16\u5199-docker-composeyml",children:"3.2 \u7f16\u5199 docker-compose.yml"}),"\n",(0,l.jsxs)(n.p,{children:["\u521b\u5efa ",(0,l.jsx)(n.code,{children:"docker-compose.yml"})," \u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-yaml",children:"version: '3.8'\n\nservices:\n  thingsgateway:\n    image: thingsgateway:1.0\n    container_name: thingsgateway\n    ports:\n      - \"5000:80\"\n    volumes:\n      - ./data:/app/Data\n      - ./logs:/app/Logs\n      - ./plugins:/app/Plugins\n    environment:\n      - ASPNETCORE_ENVIRONMENT=Production\n      - ASPNETCORE_URLS=http://+:80\n    restart: always\n    networks:\n      - thingsgateway-network\n\nnetworks:\n  thingsgateway-network:\n    driver: bridge\n"})}),"\n",(0,l.jsx)(n.h3,{id:"33-docker-composeyml-\u53c2\u6570\u8bf4\u660e",children:"3.3 docker-compose.yml \u53c2\u6570\u8bf4\u660e"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"\u53c2\u6570"}),(0,l.jsx)(n.th,{children:"\u8bf4\u660e"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"version"})}),(0,l.jsx)(n.td,{children:"Compose \u6587\u4ef6\u7248\u672c"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"services"})}),(0,l.jsx)(n.td,{children:"\u5b9a\u4e49\u670d\u52a1\u5217\u8868"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"image"})}),(0,l.jsx)(n.td,{children:"\u4f7f\u7528\u7684\u955c\u50cf"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"ports"})}),(0,l.jsx)(n.td,{children:"\u7aef\u53e3\u6620\u5c04"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"volumes"})}),(0,l.jsx)(n.td,{children:"\u6570\u636e\u5377\u6302\u8f7d\uff0c\u5b9e\u73b0\u6570\u636e\u6301\u4e45\u5316"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"environment"})}),(0,l.jsx)(n.td,{children:"\u73af\u5883\u53d8\u91cf\u914d\u7f6e"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"restart"})}),(0,l.jsx)(n.td,{children:"\u91cd\u542f\u7b56\u7565"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"networks"})}),(0,l.jsx)(n.td,{children:"\u7f51\u7edc\u914d\u7f6e"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"34-\u542f\u52a8\u670d\u52a1",children:"3.4 \u542f\u52a8\u670d\u52a1"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker-compose up -d\n"})}),"\n",(0,l.jsx)(n.h3,{id:"35-\u505c\u6b62\u670d\u52a1",children:"3.5 \u505c\u6b62\u670d\u52a1"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker-compose down\n"})}),"\n",(0,l.jsx)(n.h3,{id:"36-\u67e5\u770b\u65e5\u5fd7",children:"3.6 \u67e5\u770b\u65e5\u5fd7"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker-compose logs -f thingsgateway\n"})}),"\n",(0,l.jsx)(n.h2,{id:"\u56db\u6570\u636e\u6301\u4e45\u5316\u914d\u7f6e",children:"\u56db\u3001\u6570\u636e\u6301\u4e45\u5316\u914d\u7f6e"}),"\n",(0,l.jsx)(n.h3,{id:"41-\u6570\u636e\u5377\u6302\u8f7d",children:"4.1 \u6570\u636e\u5377\u6302\u8f7d"}),"\n",(0,l.jsx)(n.p,{children:"\u4e3a\u4e86\u786e\u4fdd\u5bb9\u5668\u91cd\u542f\u540e\u6570\u636e\u4e0d\u4e22\u5931\uff0c\u9700\u8981\u6302\u8f7d\u6570\u636e\u5377\uff1a"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway \\\n  -p 5000:80 \\\n  -v /path/to/data:/app/Data \\\n  -v /path/to/logs:/app/Logs \\\n  -v /path/to/plugins:/app/Plugins \\\n  --restart=always \\\n  -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h3,{id:"42-\u6302\u8f7d\u76ee\u5f55\u8bf4\u660e",children:"4.2 \u6302\u8f7d\u76ee\u5f55\u8bf4\u660e"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"\u76ee\u5f55"}),(0,l.jsx)(n.th,{children:"\u8bf4\u660e"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"/app/Data"})}),(0,l.jsx)(n.td,{children:"\u6570\u636e\u5e93\u548c\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"/app/Logs"})}),(0,l.jsx)(n.td,{children:"\u65e5\u5fd7\u6587\u4ef6\u76ee\u5f55"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"/app/Plugins"})}),(0,l.jsx)(n.td,{children:"\u63d2\u4ef6\u76ee\u5f55"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"43-\u6743\u9650\u914d\u7f6e",children:"4.3 \u6743\u9650\u914d\u7f6e"}),"\n",(0,l.jsx)(n.p,{children:"\u5728 Linux \u7cfb\u7edf\u4e2d\uff0c\u9700\u8981\u786e\u4fdd\u6302\u8f7d\u76ee\u5f55\u7684\u6743\u9650\u6b63\u786e\uff1a"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u521b\u5efa\u76ee\u5f55\nmkdir -p /path/to/data /path/to/logs /path/to/plugins\n\n# \u8bbe\u7f6e\u6743\u9650\nchmod -R 777 /path/to/data /path/to/logs /path/to/plugins\n"})}),"\n",(0,l.jsx)(n.h2,{id:"\u4e94\u7f51\u7edc\u914d\u7f6e",children:"\u4e94\u3001\u7f51\u7edc\u914d\u7f6e"}),"\n",(0,l.jsx)(n.h3,{id:"51-\u81ea\u5b9a\u4e49\u7f51\u7edc",children:"5.
11 \u81ea\u5b9a\u4e49\u7f51\u7edc"}),"\n",(0,l.jsx)(n.p,{children:"\u521b\u5efa\u81ea\u5b9a\u4e49\u7f51\u7edc\uff0c\u4fbf\u4e8e\u5bb9\u5668\u95f4\u901a\u4fe1\uff1a"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker network create thingsgateway-network\n"})}),"\n",(0,l.jsx)(n.h3,{id:"52-\u8fde\u63a5\u5230\u7f51\u7edc",children:"5.2 \u8fde\u63a5\u5230\u7f51\u7edc"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway \\\n  --network thingsgateway-network \\\n  -p 5000:80 \\\n  --restart=always \\\n  -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h3,{id:"53-\u7f51\u7edc\u6a21\u5f0f",children:"5.3 \u7f51\u7edc\u6a21\u5f0f"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"\u7f51\u7edc\u6a21\u5f0f"}),(0,l.jsx)(n.th,{children:"\u8bf4\u660e"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"bridge"})}),(0,l.jsx)(n.td,{children:"\u6865\u63a5\u6a21\u5f0f\uff08\u9ed8\u8ba4\uff09"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"host"})}),(0,l.jsx)(n.td,{children:"\u4e3b\u673a\u6a21\u5f0f\uff0c\u5bb9\u5668\u4f7f\u7528\u4e3b\u673a\u7f51\u7edc"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"none"})}),(0,l.jsx)(n.td,{children:"\u65e0\u7f51\u7edc\u6a21\u5f0f"})]})]})]}),"\n",(0,l.jsx)(n.h2,{id:"\u516d\u65e5\u5fd7\u7ba1\u7406",children:"\u516d\u3001\u65e5\u5fd7\u7ba1\u7406"}),"\n",(0,l.jsx)(n.h3,{id:"61-\u67e5\u770b\u5bb9\u5668\u65e5\u5fd7",children:"6.1 \u67e5\u770b\u5bb9\u5668\u65e5\u5fd7"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker logs -f thingsgateway\n"})}),"\n",(0,l.jsx)(n.h3,{id:"62-\u65e5\u5fd7\u914d\u7f6e",children:"6.2 \u65e5\u5fd7\u914d\u7f6e"}),"\n",(0,l.jsxs)(n.p,{children:["\u5728 ",(0,l.jsx)(n.code,{children:"docker-compose.yml"})," \u4e2d\u914d\u7f6e\u65e5\u5fd7\u9a71\u52a8\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-yaml",children:'services:\n  thingsgateway:\n    logging:\n      driver: "json-file"\n      options:\n        max-size: "10m"\n        max-file: "3"\n'})}),"\n",(0,l.jsx)(n.h3,{id:"63-\u65e5\u5fd7\u8f6e\u8f6c",children:"6.3 \u65e5\u5fd7\u8f6e\u8f6c"}),"\n",(0,l.jsx)(n.p,{children:"\u914d\u7f6e\u65e5\u5fd7\u6587\u4ef6\u5927\u5c0f\u548c\u6570\u91cf\uff0c\u907f\u514d\u65e5\u5fd7\u6587\u4ef6\u8fc7\u5927\uff1a"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"\u53c2\u6570"}),(0,l.jsx)(n.th,{children:"\u8bf4\u660e"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"max-size"})}),(0,l.jsx)(n.td,{children:"\u5355\u4e2a\u65e5\u5fd7\u6587\u4ef6\u6700\u5927\u5927\u5c0f"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"max-file"})}),(0,l.jsx)(n.td,{children:"\u4fdd\u7559\u7684\u65e5\u5fd7\u6587\u4ef6\u6570\u91cf"})]})]})]}),"\n",(0,l.jsx)(n.h2,{id:"\u4e03\u6027\u80fd\u4f18\u5316",children:"\u4e03\u3001\u6027\u80fd\u4f18\u5316"}),"\n",(0,l.jsx)(n.h3,{id:"71-\u8d44\u6e90\u9650\u5236",children:"7.1 \u8d44\u6e90\u9650\u5236"}),"\n",(0,l.jsx)(n.p,{children:"\u9650\u5236\u5bb9\u5668\u4f7f\u7528\u7684\u8d44\u6e90\uff0c\u907f\u514d\u8d44\u6e90\u8017\u5c3d\uff1a"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'docker run --name thingsgateway \\\n  --memory="2g" \\\n  --cpus="2.0" \\\n  -p 5000:80 \\\n  --restart=always \\\n  -d thingsgateway:1.0\n'})}),"\n",(0,l.jsx)(n.h3,{id:"72-\u8d44\u6e90\u53c2\u6570\u8bf4\u660e",children:"7.2 \u8d44\u6e90\u53c2\u6570\u8bf4\u660e"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"\u53c2\u6570"}),(0,l.jsx)(n.th,{children:"\u8bf4\u660e"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"--memory"})}),(0,l.jsx)(n.td,{children:"\u9650\u5236\u5185\u5b58\u4f7f\u7528"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"--cpus"})}),(0,l.jsx)(n.td,{children:"\u9650\u5236CPU\u4f7f\u7528"})]})]})]}),"\n",(0,l.jsx)(n.h3,{id:"73-\u955c\u50cf\u4f18\u5316",children:"7.3 \u955c\u50cf\u4f18\u5316"}),"\n",(0,l.jsx)(n.h4,{id:"\u4f7f\u7528\u591a\u9636\u6bb5\u6784\u5efa",children:"\u4f7f\u7528\u591a\u9636\u6bb5\u6784\u5efa"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-dockerfile",children:'# \u6784\u5efa\u9636\u6bb5\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /src\nCOPY . .\nRUN dotnet publish -c Release -o /app/publish\n\n# \u8fd0\u884c\u9636\u6bb5\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base\nWORKDIR /app\nCOPY --from=build /app/publish .\nENTRYPOINT ["dotnet", "ThingsGateway.Server.dll"]\n'})}),"\n",(0,l.jsx)(n.h4,{id:"\u4f7f\u7528-alpine-\u955c\u50cf",children:"\u4f7f\u7528 Alpine \u955c\u50cf"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-dockerfile",children:'FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS base\nCOPY . /app\nWORKDIR /app\nEXPOSE 80\nENTRYPOINT ["dotnet", "ThingsGateway.Server.dll"]\n'})}),"\n",(0,l.jsxs)(n.admonition,{type:"tip",children:[(0,l.jsx)(n.mdxAdmonitionTitle,{children:(0,l.jsx)(n.code,{children:"Alpine \u955c\u50cf"})}),(0,l.jsx)(n.p,{children:"Alpine \u955c\u50cf\u4f53\u79ef\u66f4\u5c0f\uff0c\u4f46\u53ef\u80fd\u5b58\u5728\u517c\u5bb9\u6027\u95ee\u9898\uff0c\u5efa\u8bae\u5148\u6d4b\u8bd5"})]}),"\n",(0,l.jsx)(n.h2,{id:"\u516b\u5b89\u5168\u914d\u7f6e",children:"\u516b\u3001\u5b89\u5168\u914d\u7f6e"}),"\n",(0,l.jsx)(n.h3,{id:"81-\u975e-root-\u7528\u6237\u8fd0\u884c",children:"8.1 \u975e root \u7528\u6237\u8fd0\u884c"}),"\n",(0,l.jsx)(n.p,{children:"\u521b\u5efa\u975e root \u7528\u6237\u8fd0\u884c\u5bb9\u5668\uff1a"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-dockerfile",children:'FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base\nRUN groupadd -r thingsgateway && useradd -r -g thingsgateway thingsgateway\nCOPY . /app\nWORKDIR /app\nRUN chown -R thingsgateway:thingsgateway /app\nUSER thingsgateway\nEXPOSE 80\nENTRYPOINT ["dotnet", "ThingsGateway.Server.dll"]\n'})}),"\n",(0,l.jsx)(n.h3,{id:"82-\u53ea\u8bfb\u6587\u4ef6\u7cfb\u7edf",children:"8.2 \u53ea\u8bfb\u6587\u4ef6\u7cfb\u7edf"}),"\n",(0,l.jsx)(n.p,{children:"\u5c06\u5bb9\u5668\u6587\u4ef6\u7cfb\u7edf\u8bbe\u7f6e\u4e3a\u53ea\u8bfb\uff0c\u63d0\u9ad8\u5b89\u5168\u6027\uff1a"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway \\\n  --read-only \\\n  --tmpfs /tmp \\\n  -p 5000:80 \\\n  --restart=always \\\n  -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h3,{id:"83-\u5b89\u5168\u626b\u63cf",children:"8.3 \u5b89\u5168\u626b\u63cf"}),"\n",(0,l.jsx)(n.p,{children:"\u4f7f\u7528 Docker \u5b89\u5168\u626b\u63cf\u5de5\u5177\u68c0\u67e5\u955c\u50cf\u6f0f\u6d1e\uff1a"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker scan thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h2,{id:"\u4e5d\u5e38\u89c1\u95ee\u9898\u6392\u67e5",children:"\u4e5d\u3001\u5e38\u89c1\u95ee\u9898\u6392\u67e5"}),"\n",(0,l.jsx)(n.h3,{id:"91-\u5bb9\u5668\u65e0\u6cd5\u542f\u52a8",children:"9.1 \u5bb9\u5668\u65e0\u6cd5\u542f\u52a8"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u73b0\u8c61"}),"\uff1a\u5bb9\u5668\u542f\u52a8\u540e\u7acb\u5373\u9000\u51fa"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u53ef\u80fd\u539f\u56e0"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u7aef\u53e3\u88ab\u5360\u7528"}),"\n",(0,l.jsx)(n.li,{children:"\u914d\u7f6e\u6587\u4ef6\u9519\u8bef"}),"\n",(0,l.jsx)(n.li,{children:"\u6743\u9650\u4e0d\u8db3"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u6392\u67e5\u6b65\u9aa4"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\u67e5\u7
170b\u5bb9\u5668\u65e5\u5fd7\uff1a",(0,l.jsx)(n.code,{children:"docker logs thingsgateway"})]}),"\n",(0,l.jsxs)(n.li,{children:["\u68c0\u67e5\u7aef\u53e3\u5360\u7528\uff1a",(0,l.jsx)(n.code,{children:"netstat -ano | findstr 5000"})]}),"\n",(0,l.jsx)(n.li,{children:"\u68c0\u67e5\u914d\u7f6e\u6587\u4ef6\u8bed\u6cd5"}),"\n",(0,l.jsx)(n.li,{children:"\u68c0\u67e5\u6587\u4ef6\u6743\u9650"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"92-\u6570\u636e\u4e22\u5931",children:"9.2 \u6570\u636e\u4e22\u5931"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u73b0\u8c61"}),"\uff1a\u5bb9\u5668\u91cd\u542f\u540e\u6570\u636e\u4e22\u5931"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u53ef\u80fd\u539f\u56e0"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u672a\u6302\u8f7d\u6570\u636e\u5377"}),"\n",(0,l.jsx)(n.li,{children:"\u6570\u636e\u5377\u8def\u5f84\u9519\u8bef"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u89e3\u51b3\u65b9\u6848"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"\u786e\u4fdd\u6b63\u786e\u6302\u8f7d\u6570\u636e\u5377"}),"\n",(0,l.jsx)(n.li,{children:"\u68c0\u67e5\u6570\u636e\u5377\u8def\u5f84\u662f\u5426\u6b63\u786e"}),"\n",(0,l.jsxs)(n.li,{children:["\u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"docker volume"})," \u547d\u4ee4\u7ba1\u7406\u6570\u636e\u5377"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"93-\u6027\u80fd\u95ee\u9898",children:"9.3 \u6027\u80fd\u95ee\u9898"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u73b0\u8c61"}),"\uff1a\u5bb9\u5668\u8fd0\u884c\u7f13\u6162"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u53ef\u80fd\u539f\u56e0"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u8d44\u6e90\u9650\u5236\u8fc7\u4f4e"}),"\n",(0,l.jsx)(n.li,{children:"\u7f51\u7edc\u5ef6\u8fdf\u9ad8"}),"\n",(0,l.jsx)(n.li,{children:"\u6570\u636e\u5e93\u6027\u80fd\u95ee\u9898"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u4f18\u5316\u5efa\u8bae"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"\u589e\u52a0\u5185\u5b58\u548cCPU\u9650\u5236"}),"\n",(0,l.jsx)(n.li,{children:"\u4f18\u5316\u7f51\u7edc\u914d\u7f6e"}),"\n",(0,l.jsx)(n.li,{children:"\u4f18\u5316\u6570\u636e\u5e93\u67e5\u8be2"}),"\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u7f13\u5b58\u673a\u5236"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"94-\u7f51\u7edc\u8fde\u63a5\u95ee\u9898",children:"9.4 \u7f51\u7edc\u8fde\u63a5\u95ee\u9898"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u73b0\u8c61"}),"\uff1a\u5bb9\u5668\u65e0\u6cd5\u8bbf\u95ee\u5916\u90e8\u7f51\u7edc"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u53ef\u80fd\u539f\u56e0"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"DNS \u914d\u7f6e\u9519\u8bef"}),"\n",(0,l.jsx)(n.li,{children:"\u9632\u706b\u5899\u963b\u6b62"}),"\n",(0,l.jsx)(n.li,{children:"\u7f51\u7edc\u6a21\u5f0f\u914d\u7f6e\u9519\u8bef"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"\u6392\u67e5\u6b65\u9aa4"}),"\uff1a"]}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"\u68c0\u67e5 DNS \u914d\u7f6e"}),"\n",(0,l.jsx)(n.li,{children:"\u68c0\u67e5\u9632\u706b\u5899\u89c4\u5219"}),"\n",(0,l.jsx)(n.li,{children:"\u5c1d\u8bd5 ping \u5916\u90e8\u5730\u5740"}),"\n",(0,l.jsx)(n.li,{children:"\u68c0\u67e5\u7f51\u7edc\u6a21\u5f0f\u914d\u7f6e"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"\u5341\u5907\u4efd\u4e0e\u6062\u590d",children:"\u5341\u3001\u5907\u4efd\u4e0e\u6062\u590d"}),"\n",(0,l.jsx)(n.h3,{id:"101-\u6570\u636e\u5907\u4efd",children:"10.1 \u6570\u636e\u5907\u4efd"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u5907\u4efd\u6570\u636e\u5377\ndocker run --rm -v thingsgateway-data:/data -v $(pwd):/backup alpine tar czf /backup/thingsgateway-backup.tar.gz /data\n"})}),"\n",(0,l.jsx)(n.h3,{id:"102-\u6570\u636e\u6062\u590d",children:"10.2 \u6570\u636e\u6062\u590d"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u6062\u590d\u6570\u636e\u5377\ndocker run --rm -v thingsgateway-data:/data -v $(pwd):/backup alpine tar xzf /backup/thingsgateway-backup.tar.gz -C /\n"})}),"\n",(0,l.jsx)(n.h3,{id:"103-\u955c\u50cf\u5bfc\u51fa",children:"10.3 \u955c\u50cf\u5bfc\u51fa"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u5bfc\u51fa\u955c\u50cf\ndocker save -o thingsgateway.tar thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h3,{id:"104-\u955c\u50cf\u5bfc\u5165",children:"10.4 \u955c\u50cf\u5bfc\u5165"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u5bfc\u5165\u955c\u50cf\ndocker load -i thingsgateway.tar\n"})}),"\n",(0,l.jsx)(n.h2,{id:"\u5341\u4e00\u76d1\u63a7\u4e0e\u7ef4\u62a4",children:"\u5341\u4e00\u3001\u76d1\u63a7\u4e0e\u7ef4\u62a4"}),"\n",(0,l.jsx)(n.h3,{id:"111-\u5bb9\u5668\u76d1\u63a7",children:"11.1 \u5bb9\u5668\u76d1\u63a7"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u67e5\u7
170b\u5bb9\u5668\u72b6\u6001\ndocker ps -a\n\n# \u67e5\u770b\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\ndocker stats thingsgateway\n\n# \u67e5\u770b\u5bb9\u5668\u8be6\u7ec6\u4fe1\u606f\ndocker inspect thingsgateway\n"})}),"\n",(0,l.jsx)(n.h3,{id:"112-\u5bb9\u5668\u66f4\u65b0",children:"11.2 \u5bb9\u5668\u66f4\u65b0"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u505c\u6b62\u65e7\u5bb9\u5668\ndocker stop thingsgateway\n\n# \u5220\u9664\u65e7\u5bb9\u5668\ndocker rm thingsgateway\n\n# \u62c9\u53d6\u65b0\u955c\u50cf\ndocker pull thingsgateway:2.0\n\n# \u542f\u52a8\u65b0\u5bb9\u5668\ndocker run --name thingsgateway -p 5000:80 --restart=always -d thingsgateway:2.0\n"})}),"\n",(0,l.jsx)(n.h3,{id:"113-\u5b9a\u671f\u7ef4\u62a4",children:"11.3 \u5b9a\u671f\u7ef4\u62a4"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u6e05\u7406\u672a\u4f7f\u7528\u7684\u955c\u50cf\u548c\u5bb9\u5668"}),"\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u5907\u4efd\u6570\u636e"}),"\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u68c0\u67e5\u65e5\u5fd7\u6587\u4ef6\u5927\u5c0f"}),"\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u66f4\u65b0\u955c\u50cf\u7248\u672c"}),"\n"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u6e05\u7406\u672a\u4f7f\u7528\u7684\u955c\u50cf\ndocker image prune -a\n\n# \u6e05\u7406\u672a\u4f7f\u7528\u7684\u5bb9\u5668\ndocker container prune\n\n# \u6e05\u7406\u672a\u4f7f\u7528\u7684\u5377\ndocker volume prune\n"})}),"\n",(0,l.jsx)(n.h2,{id:"\u5341\u4e8c\u6700\u4f73\u5b9e\u8df5",children:"\u5341\u4e8c\u3001\u6700\u4f73\u5b9e\u8df5"}),"\n",(0,l.jsx)(n.h3,{id:"121-\u955c\u50cf\u7ba1\u7406",children:"12.1 \u955c\u50cf\u7ba1\u7406"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u8bed\u4e49\u5316\u7248\u672c\u53f7"}),"\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u66f4\u65b0\u57fa\u7840\u955c\u50cf"}),"\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u591a\u9636\u6bb5\u6784\u5efa\u51cf\u5c0f\u955c\u50cf\u4f53\u79ef"}),"\n",(0,l.jsx)(n.li,{children:"\u6807\u8bb0\u955c\u50cf\u7248\u672c\uff0c\u4fbf\u4e8e\u56de\u6eda"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"122-\u5bb9\u5668\u7ba1\u7406",children:"12.2 \u5bb9\u5668\u7ba1\u7406"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528 Docker Compose \u7ba1\u7406\u591a\u5bb9\u5668\u5e94\u7528"}),"\n",(0,l.jsx)(n.li,{children:"\u914d\u7f6e\u5408\u7406\u7684\u8d44\u6e90\u9650\u5236"}),"\n",(0,l.jsx)(n.li,{children:"\u8bbe\u7f6e\u81ea\u52a8\u91cd\u542f\u7b56\u7565"}),"\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u5065\u5eb7\u68c0\u67e5"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"123-\u6570\u636e\u7ba1\u7406",children:"12.3 \u6570\u636e\u7ba1\u7406"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u6570\u636e\u5377\u5b9e\u73b0\u6570\u636e\u6301\u4e45\u5316"}),"\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u5907\u4efd\u6570\u636e"}),"\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u547d\u540d\u5377\u4fbf\u4e8e\u7ba1\u7406"}),"\n",(0,l.jsx)(n.li,{children:"\u6ce8\u610f\u6570\u636e\u5377\u6743\u9650"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"124-\u5b89\u5168\u7ba1\u7406",children:"12.4 \u5b89\u5168\u7ba1\u7406"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u975e root \u7528\u6237\u8fd0\u884c\u5bb9\u5668"}),"\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u626b\u63cf\u955c\u50cf\u6f0f\u6d1e"}),"\n",(0,l.jsx)(n.li,{children:"\u9650\u5236\u5bb9\u5668\u6743\u9650"}),"\n",(0,l.jsx)(n.li,{children:"\u4f7f\u7528\u53ea\u8bfb\u6587\u4ef6\u7cfb\u7edf"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"125-\u65e5\u5fd7\u7ba1\u7406",children:"12.5 \u65e5\u5fd7\u7ba1\u7406"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u914d\u7f6e\u65e5\u5fd7\u8f6e\u8f6c"}),"\n",(0,l.jsx)(n.li,{children:"\u96c6\u4e2d\u6536\u96c6\u65e5\u5fd7"}),"\n",(0,l.jsx)(n.li,{children:"\u5b9a\u671f\u6e05\u7406\u65e5\u5fd7"}),"\n",(0,l.jsx)(n.li,{children:"\u76d1\u63a7\u65e5\u5fd7\u5927\u5c0f"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"\u5341\u4e09\u5e38\u89c1\u95ee\u9898",children:"\u5341\u4e09\u3001\u5e38\u89c1\u95ee\u9898"}),"\n",(0,l.jsx)(n.h3,{id:"q1-\u5982\u4f55\u4fee\u6539\u5bb9\u5668\u7aef\u53e3\u6620\u5c04",children:"Q1: \u5982\u4f55\u4fee\u6539\u5bb9\u5668\u7aef\u53e3\u6620\u5c04\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u505c\u6b62\u5e76\u5220\u9664\u73b0\u6709\u5bb9\u5668\uff0c\u7136\u540e\u4f7f\u7528\u65b0\u7684\u7aef\u53e3\u6620\u5c04\u91cd\u65b0\u521b\u5efa\u5bb9\u5668\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker stop thingsgateway\ndocker rm thingsgateway\ndocker run --name thingsgateway -p 8080:80 --restart=always -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h3,{id:"q2-\u5982\u4f55\u8fdb\u5165\u5bb9\u5668\u5185\u90e8",children:"Q2: \u5982\u4f55\u8fdb\u5165\u5bb9\u5668\u5185\u90e8\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"docker exec"})," \u547d\u4ee4\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker exec -it thingsgateway /bin/bash\n"})}
1),"\n",(0,l.jsx)(n.h3,{id:"q3-\u5982\u4f55\u67e5\u770b\u5bb9\u5668\u65e5\u5fd7",children:"Q3: \u5982\u4f55\u67e5\u770b\u5bb9\u5668\u65e5\u5fd7\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"docker logs"})," \u547d\u4ee4\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker logs -f thingsgateway\n"})}),"\n",(0,l.jsx)(n.h3,{id:"q4-\u5982\u4f55\u9650\u5236\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528",children:"Q4: \u5982\u4f55\u9650\u5236\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u5728\u542f\u52a8\u5bb9\u5668\u65f6\u6307\u5b9a\u8d44\u6e90\u9650\u5236\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'docker run --name thingsgateway \\\n  --memory="2g" \\\n  --cpus="2.0" \\\n  -p 5000:80 \\\n  --restart=always \\\n  -d thingsgateway:1.0\n'})}),"\n",(0,l.jsx)(n.h3,{id:"q5-\u5982\u4f55\u5b9e\u73b0\u5bb9\u5668\u81ea\u52a8\u91cd\u542f",children:"Q5: \u5982\u4f55\u5b9e\u73b0\u5bb9\u5668\u81ea\u52a8\u91cd\u542f\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"--restart"})," \u53c2\u6570\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway \\\n  --restart=always \\\n  -p 5000:80 \\\n  -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.p,{children:"\u91cd\u542f\u7b56\u7565\u9009\u9879\uff1a"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"no"}),"\uff1a\u4e0d\u81ea\u52a8\u91cd\u542f\uff08\u9ed8\u8ba4\uff09"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"on-failure"}),"\uff1a\u5bb9\u5668\u5f02\u5e38\u9000\u51fa\u65f6\u91cd\u542f"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"always"}),"\uff1a\u603b\u662f\u91cd\u542f"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"unless-stopped"}),"\uff1a\u9664\u975e\u624b\u52a8\u505c\u6b62\uff0c\u5426\u5219\u603b\u662f\u91cd\u542f"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"q6-\u5982\u4f55\u5728\u5bb9\u5668\u4e2d\u4f7f\u7528\u4e3b\u673a\u7f51\u7edc",children:"Q6: \u5982\u4f55\u5728\u5bb9\u5668\u4e2d\u4f7f\u7528\u4e3b\u673a\u7f51\u7edc\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"--network host"})," \u53c2\u6570\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway \\\n  --network host \\\n  --restart=always \\\n  -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.h3,{id:"q7-\u5982\u4f55\u67e5\u770b\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5",children:"Q7: \u5982\u4f55\u67e5\u770b\u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"docker stats"})," \u547d\u4ee4\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker stats thingsgateway\n"})}),"\n",(0,l.jsx)(n.h3,{id:"q8-\u5982\u4f55\u5bfc\u51fa\u548c\u5bfc\u5165\u955c\u50cf",children:"Q8: \u5982\u4f55\u5bfc\u51fa\u548c\u5bfc\u5165\u955c\u50cf\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"docker save"})," \u548c ",(0,l.jsx)(n.code,{children:"docker load"})," \u547d\u4ee4\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u5bfc\u51fa\u955c\u50cf\ndocker save -o thingsgateway.tar thingsgateway:1.0\n\n# \u5bfc\u5165\u955c\u50cf\ndocker load -i thingsgateway.tar\n"})}),"\n",(0,l.jsx)(n.h3,{id:"q9-\u5982\u4f55\u6e05\u7406\u672a\u4f7f\u7528\u7684-docker-\u8d44\u6e90",children:"Q9: \u5982\u4f55\u6e05\u7406\u672a\u4f7f\u7528\u7684 Docker \u8d44\u6e90\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528 ",(0,l.jsx)(n.code,{children:"docker prune"})," \u547d\u4ee4\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# \u6e05\u7406\u672a\u4f7f\u7528\u7684\u955c\u50cf\ndocker image prune -a\n\n# \u6e05\u7406\u672a\u4f7f\u7528\u7684\u5bb9\u5668\ndocker container prune\n\n# \u6e05\u7406\u672a\u4f7f\u7528\u7684\u5377\ndocker volume prune\n\n# \u6e05\u7406\u6240\u6709\u672a\u4f7f\u7528\u7684\u8d44\u6e90\ndocker system prune -a\n"})}),"\n",(0,l.jsx)(n.h3,{id:"q10-\u5982\u4f55\u914d\u7f6e\u5bb9\u5668\u65f6\u533a",children:"Q10: \u5982\u4f55\u914d\u7f6e\u5bb9\u5668\u65f6\u533a\uff1f"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A"}),": \u4f7f\u7528\u73af\u5883\u53d8\u91cf\u6216\u6302\u8f7d\u65f6\u533a\u6587\u4ef6\uff1a"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway \\\n  -e TZ=Asia/Shanghai \\\n  -p 5000:80 \\\n  --restart=always \\\n  -d thingsgateway:1.0\n"})}),"\n",(0,l.jsx)(n.p,{children:"\u6216"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"docker run --name thingsgateway \\\n  -v /etc/localtime:/etc/localtime:ro \\\n  -p 5000:80 \\\n  --restart=always \\\n  -d thingsgateway:1.0\n"})})]})}function x(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(t,{...e})}):t(e)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.