1 line
No EOL
8.2 KiB
JavaScript
1 line
No EOL
8.2 KiB
JavaScript
"use strict";(self.webpackChunkopenrag_docs=self.webpackChunkopenrag_docs||[]).push([[272],{5788:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>a});const s=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":"/openrag/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":"/openrag/quickstart"},"next":{"title":"Terminal Interface (TUI)","permalink":"/openrag/get-started/tui"}}');var t=r(4848),o=r(8453);const l={title:"Docker deployment",slug:"/get-started/docker"},i=void 0,c={},a=[{value:"Rebuild all Docker containers",id:"rebuild-all-docker-containers",level:2}];function d(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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"There are two different Docker Compose files.\nThey deploy the same applications and containers, but to different environments."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/docker-compose.yml",children:(0,t.jsx)(n.code,{children:"docker-compose.yml"})})," is an OpenRAG deployment with GPU support for accelerated AI processing."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/docker-compose-cpu.yml",children:(0,t.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,t.jsx)(n.p,{children:"To install OpenRAG with Docker Compose:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Clone the OpenRAG repository."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/langflow-ai/openrag.git\ncd openrag\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Copy the example ",(0,t.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,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"cp .env.example .env\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Alternatively, create a new ",(0,t.jsx)(n.code,{children:".env"})," file in the repository root."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"touch .env\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Set environment variables. The Docker Compose files are populated with values from your ",(0,t.jsx)(n.code,{children:".env"}),", so the following values are ",(0,t.jsx)(n.strong,{children:"required"})," to be set:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.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,t.jsxs)(n.p,{children:["For more information on configuring OpenRAG with environment variables, see ",(0,t.jsx)(n.a,{href:"/configure/configuration",children:"Environment variables"}),".\nFor additional configuration values, including ",(0,t.jsx)(n.code,{children:"config.yaml"}),", see ",(0,t.jsx)(n.a,{href:"/configure/configuration",children:"Configuration"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Deploy OpenRAG with Docker Compose based on your deployment type."}),"\n",(0,t.jsx)(n.p,{children:"For GPU-enabled systems, run the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose up -d\n"})}),"\n",(0,t.jsx)(n.p,{children:"For CPU-only systems, run the following command:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose -f docker-compose-cpu.yml up -d\n"})}),"\n",(0,t.jsx)(n.p,{children:"The OpenRAG Docker Compose file starts five containers:"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Container Name"}),(0,t.jsx)(n.th,{children:"Default Address"}),(0,t.jsx)(n.th,{children:"Purpose"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenRAG Backend"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.a,{href:"http://localhost:8000",children:"http://localhost:8000"})}),(0,t.jsx)(n.td,{children:"FastAPI server and core functionality."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenRAG Frontend"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.a,{href:"http://localhost:3000",children:"http://localhost:3000"})}),(0,t.jsx)(n.td,{children:"React web interface for users."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Langflow"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.a,{href:"http://localhost:7860",children:"http://localhost:7860"})}),(0,t.jsx)(n.td,{children:"AI workflow engine and flow management."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenSearch"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.a,{href:"http://localhost:9200",children:"http://localhost:9200"})}),(0,t.jsx)(n.td,{children:"Vector database for document storage."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"OpenSearch Dashboards"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.a,{href:"http://localhost:5601",children:"http://localhost:5601"})}),(0,t.jsx)(n.td,{children:"Database administration interface."})]})]})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Verify installation by confirming all services are running."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose ps\n"})}),"\n",(0,t.jsx)(n.p,{children:"You can now access the application at:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Frontend"}),": ",(0,t.jsx)(n.a,{href:"http://localhost:3000",children:"http://localhost:3000"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Backend API"}),": ",(0,t.jsx)(n.a,{href:"http://localhost:8000",children:"http://localhost:8000"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Langflow"}),": ",(0,t.jsx)(n.a,{href:"http://localhost:7860",children:"http://localhost:7860"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Continue with the ",(0,t.jsx)(n.a,{href:"/quickstart",children:"Quickstart"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"rebuild-all-docker-containers",children:"Rebuild all Docker containers"}),"\n",(0,t.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,t.jsx)(n.code,{children:"./documents"})," directory will persist, since the directory is mounted as a volume in the OpenRAG backend container."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker compose up --build --force-recreate --remove-orphans\n"})})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},8453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>i});var s=r(6540);const t={},o=s.createContext(t);function l(e){const n=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); |