1 line
No EOL
8.7 KiB
JavaScript
1 line
No EOL
8.7 KiB
JavaScript
"use strict";(self.webpackChunkopenrag_docs=self.webpackChunkopenrag_docs||[]).push([[272],{5788:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"get-started/docker","title":"Docker deployment","description":"There are two different Docker Compose files.","source":"@site/docs/get-started/docker.mdx","sourceDirName":"get-started","slug":"/get-started/docker","permalink":"/get-started/docker","draft":false,"unlisted":false,"editUrl":"https://github.com/openrag/openrag/tree/main/docs/docs/get-started/docker.mdx","tags":[],"version":"current","frontMatter":{"title":"Docker deployment","slug":"/get-started/docker"},"sidebar":"tutorialSidebar","previous":{"title":"Quickstart","permalink":"/quickstart"},"next":{"title":"Terminal Interface (TUI)","permalink":"/get-started/tui"}}');var s=r(4848),o=r(8453),i=r(9334);const l={title:"Docker deployment",slug:"/get-started/docker"},c=void 0,a={},d=[...i.RM,{value:"Rebuild all Docker containers",id:"rebuild-all-docker-containers",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.Ay,{}),"\n",(0,s.jsx)(n.p,{children:"There are two different Docker Compose files.\nThey deploy the same applications and containers, but to different environments."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/docker-compose.yml",children:(0,s.jsx)(n.code,{children:"docker-compose.yml"})})," is an OpenRAG deployment with GPU support for accelerated AI processing."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/docker-compose-cpu.yml",children:(0,s.jsx)(n.code,{children:"docker-compose-cpu.yml"})})," is a CPU-only version of OpenRAG for systems without GPU support. Use this Docker compose file for environments where GPU drivers aren't available."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"To install OpenRAG with Docker Compose:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Clone the OpenRAG repository."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/langflow-ai/openrag.git\ncd openrag\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Copy the example ",(0,s.jsx)(n.code,{children:".env"})," file that is included in the repository root.\nThe example file includes all environment variables with comments to guide you in finding and setting their values."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"cp .env.example .env\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Alternatively, create a new ",(0,s.jsx)(n.code,{children:".env"})," file in the repository root."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"touch .env\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Set environment variables. The Docker Compose files are populated with values from your ",(0,s.jsx)(n.code,{children:".env"}),", so the following values are ",(0,s.jsx)(n.strong,{children:"required"})," to be set:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"OPENSEARCH_PASSWORD=your_secure_password\nOPENAI_API_KEY=your_openai_api_key\n\nLANGFLOW_SUPERUSER=admin\nLANGFLOW_SUPERUSER_PASSWORD=your_langflow_password\nLANGFLOW_SECRET_KEY=your_secret_key\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For more information on configuring OpenRAG with environment variables, see ",(0,s.jsx)(n.a,{href:"/configure/configuration",children:"Environment variables"}),".\nFor additional configuration values, including ",(0,s.jsx)(n.code,{children:"config.yaml"}),", see ",(0,s.jsx)(n.a,{href:"/configure/configuration",children:"Configuration"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Deploy OpenRAG with Docker Compose based on your deployment type."}),"\n",(0,s.jsx)(n.p,{children:"For GPU-enabled systems, run the following command:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,s.jsx)(n.p,{children:"For CPU-only systems, run the following command:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker compose -f docker-compose-cpu.yml up -d\n"})}),"\n",(0,s.jsx)(n.p,{children:"The OpenRAG Docker Compose file starts five containers:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Container Name"}),(0,s.jsx)(n.th,{children:"Default Address"}),(0,s.jsx)(n.th,{children:"Purpose"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenRAG Backend"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"http://localhost:8000",children:"http://localhost:8000"})}),(0,s.jsx)(n.td,{children:"FastAPI server and core functionality."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenRAG Frontend"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"http://localhost:3000",children:"http://localhost:3000"})}),(0,s.jsx)(n.td,{children:"React web interface for users."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Langflow"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"http://localhost:7860",children:"http://localhost:7860"})}),(0,s.jsx)(n.td,{children:"AI workflow engine and flow management."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenSearch"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"http://localhost:9200",children:"http://localhost:9200"})}),(0,s.jsx)(n.td,{children:"Vector database for document storage."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"OpenSearch Dashboards"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"http://localhost:5601",children:"http://localhost:5601"})}),(0,s.jsx)(n.td,{children:"Database administration interface."})]})]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Verify installation by confirming all services are running."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker compose ps\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can now access the application at:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Frontend"}),": ",(0,s.jsx)(n.a,{href:"http://localhost:3000",children:"http://localhost:3000"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Backend API"}),": ",(0,s.jsx)(n.a,{href:"http://localhost:8000",children:"http://localhost:8000"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Langflow"}),": ",(0,s.jsx)(n.a,{href:"http://localhost:7860",children:"http://localhost:7860"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Continue with the ",(0,s.jsx)(n.a,{href:"/quickstart",children:"Quickstart"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"rebuild-all-docker-containers",children:"Rebuild all Docker containers"}),"\n",(0,s.jsxs)(n.p,{children:["If you need to reset state and rebuild all of your containers, run the following command.\nYour OpenSearch and Langflow databases will be lost.\nDocuments stored in the ",(0,s.jsx)(n.code,{children:"./documents"})," directory will persist, since the directory is mounted as a volume in the OpenRAG backend container."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker compose up --build --force-recreate --remove-orphans\n"})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>l});var t=r(6540);const s={},o=t.createContext(s);function i(e){const n=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(o.Provider,{value:n},e.children)}},9334:(e,n,r)=>{r.d(n,{Ay:()=>l,RM:()=>o});var t=r(4848),s=r(8453);const o=[];function i(e){const n={admonition:"admonition",p:"p",...(0,s.R)(),...e.components};return(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"OpenRAG is is currently in public preview.\nDevelopment is ongoing, and the features and functionality are subject to change."})})}function l(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}}}]); |