Deploy website - based on 62723fa32f

This commit is contained in:
mbecker20
2025-02-08 19:18:40 -08:00
parent 8c2d8ddc57
commit bd460f4cce
88 changed files with 160 additions and 161 deletions
+3 -3
View File
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
komo.do
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[469],{9723:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>l});var t=n(4848),i=n(8453),c=n(6695);const s={},a="Advanced Configuration",r={id:"setup/advanced",title:"Advanced Configuration",description:"OIDC / Oauth2",source:"@site/docs/setup/advanced.mdx",sourceDirName:"setup",slug:"/setup/advanced",permalink:"/docs/setup/advanced",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/setup/advanced.mdx",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Sqlite",permalink:"/docs/setup/sqlite"},next:{title:"Connect More Servers",permalink:"/docs/connect-servers"}},d={},l=[{value:"OIDC / Oauth2",id:"oidc--oauth2",level:3},{value:"Mount a config file",id:"mount-a-config-file",level:3}];function h(e){const o={a:"a",admonition:"admonition",code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.header,{children:(0,t.jsx)(o.h1,{id:"advanced-configuration",children:"Advanced Configuration"})}),"\n",(0,t.jsx)(o.h3,{id:"oidc--oauth2",children:"OIDC / Oauth2"}),"\n",(0,t.jsxs)(o.p,{children:["To enable OAuth2 login, you must create a client on the respective OAuth provider,\nfor example ",(0,t.jsx)(o.a,{href:"https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app",children:"Github"}),"\nor ",(0,t.jsx)(o.a,{href:"https://developers.google.com/identity/protocols/oauth2",children:"Google"}),"."]}),"\n",(0,t.jsxs)(o.p,{children:["Komodo also supports self hosted Oauth2 providers like ",(0,t.jsx)(o.a,{href:"https://docs.goauthentik.io/docs/providers/oauth2/",children:"Authentik"})," or ",(0,t.jsx)(o.a,{href:"https://docs.gitea.com/development/oauth2-provider",children:"Gitea"}),"."]}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsxs)(o.li,{children:["Komodo uses the ",(0,t.jsx)(o.code,{children:"web application"})," login flow."]}),"\n",(0,t.jsxs)(o.li,{children:["The redirect uri is:","\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsxs)(o.li,{children:[(0,t.jsx)(o.code,{children:"<KOMODO_HOST>/auth/github/callback"})," for Github."]}),"\n",(0,t.jsxs)(o.li,{children:[(0,t.jsx)(o.code,{children:"<KOMODO_HOST>/auth/google/callback"})," for Google."]}),"\n",(0,t.jsxs)(o.li,{children:[(0,t.jsx)(o.code,{children:"<KOMODO_HOST>/auth/oidc/callback"})," for OIDC."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(o.h3,{id:"mount-a-config-file",children:"Mount a config file"}),"\n",(0,t.jsxs)(o.p,{children:["If you prefer to keep sensitive information out of environment variables, you can optionally\nwrite a config file on your host, and mount it to ",(0,t.jsx)(o.code,{children:"/config/config.toml"})," in the Komodo core container."]}),"\n",(0,t.jsx)(o.admonition,{type:"info",children:(0,t.jsx)(o.p,{children:"Configuration can still be passed in environment variables, and will take precedent over what is passed in the file."})}),"\n",(0,t.jsxs)(o.p,{children:["Quick download to ",(0,t.jsx)(o.code,{children:"./komodo/core.config.toml"}),":"]}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:"wget -P komodo https://raw.githubusercontent.com/mbecker20/komodo/main/config/core.config.toml\n"})}),"\n","\n",(0,t.jsx)(c.A,{title:"https://github.com/mbecker20/komodo/blob/main/config/core.config.toml",url:"https://raw.githubusercontent.com/mbecker20/komodo/main/config/core.config.toml",language:"toml"})]})}function u(e={}){const{wrapper:o}={...(0,i.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},6695:(e,o,n)=>{n.d(o,{A:()=>s});var t=n(6540),i=n(1432),c=n(4848);function s(e){let{url:o,language:n,title:s}=e;const[a,r]=(0,t.useState)("");return(0,t.useEffect)((()=>{!async function(e,o){const n=await fetch(e);o(await n.text())}(o,r)}),[]),(0,c.jsx)(i.A,{title:s??o,language:n,showLineNumbers:!0,children:a})}}}]);
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[469],{9723:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>l});var t=n(4848),i=n(8453),c=n(6695);const s={},a="Advanced Configuration",r={id:"setup/advanced",title:"Advanced Configuration",description:"OIDC / Oauth2",source:"@site/docs/setup/advanced.mdx",sourceDirName:"setup",slug:"/setup/advanced",permalink:"/docs/setup/advanced",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/setup/advanced.mdx",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Sqlite",permalink:"/docs/setup/sqlite"},next:{title:"Connect More Servers",permalink:"/docs/connect-servers"}},d={},l=[{value:"OIDC / Oauth2",id:"oidc--oauth2",level:3},{value:"Mount a config file",id:"mount-a-config-file",level:3}];function h(e){const o={a:"a",admonition:"admonition",code:"code",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.header,{children:(0,t.jsx)(o.h1,{id:"advanced-configuration",children:"Advanced Configuration"})}),"\n",(0,t.jsx)(o.h3,{id:"oidc--oauth2",children:"OIDC / Oauth2"}),"\n",(0,t.jsxs)(o.p,{children:["To enable OAuth2 login, you must create a client on the respective OAuth provider,\nfor example ",(0,t.jsx)(o.a,{href:"https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app",children:"Github"}),"\nor ",(0,t.jsx)(o.a,{href:"https://developers.google.com/identity/protocols/oauth2",children:"Google"}),"."]}),"\n",(0,t.jsxs)(o.p,{children:["Komodo also supports self hosted Oauth2 providers like ",(0,t.jsx)(o.a,{href:"https://docs.goauthentik.io/docs/providers/oauth2/",children:"Authentik"})," or ",(0,t.jsx)(o.a,{href:"https://docs.gitea.com/development/oauth2-provider",children:"Gitea"}),"."]}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsxs)(o.li,{children:["Komodo uses the ",(0,t.jsx)(o.code,{children:"web application"})," login flow."]}),"\n",(0,t.jsxs)(o.li,{children:["The redirect uri is:","\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsxs)(o.li,{children:[(0,t.jsx)(o.code,{children:"<KOMODO_HOST>/auth/github/callback"})," for Github."]}),"\n",(0,t.jsxs)(o.li,{children:[(0,t.jsx)(o.code,{children:"<KOMODO_HOST>/auth/google/callback"})," for Google."]}),"\n",(0,t.jsxs)(o.li,{children:[(0,t.jsx)(o.code,{children:"<KOMODO_HOST>/auth/oidc/callback"})," for OIDC."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(o.h3,{id:"mount-a-config-file",children:"Mount a config file"}),"\n",(0,t.jsxs)(o.p,{children:["If you prefer to keep sensitive information out of environment variables, you can optionally\nwrite a config file on your host, and mount it to ",(0,t.jsx)(o.code,{children:"/config/config.toml"})," in the Komodo core container."]}),"\n",(0,t.jsx)(o.admonition,{type:"info",children:(0,t.jsx)(o.p,{children:"Configuration can still be passed in environment variables, and will take precedent over what is passed in the file."})}),"\n",(0,t.jsxs)(o.p,{children:["Quick download to ",(0,t.jsx)(o.code,{children:"./komodo/core.config.toml"}),":"]}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:"wget -P komodo https://raw.githubusercontent.com/moghtech/komodo/main/config/core.config.toml\n"})}),"\n","\n",(0,t.jsx)(c.A,{title:"https://github.com/moghtech/komodo/blob/main/config/core.config.toml",url:"https://raw.githubusercontent.com/moghtech/komodo/main/config/core.config.toml",language:"toml"})]})}function u(e={}){const{wrapper:o}={...(0,i.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},6695:(e,o,n)=>{n.d(o,{A:()=>s});var t=n(6540),i=n(1432),c=n(4848);function s(e){let{url:o,language:n,title:s}=e;const[a,r]=(0,t.useState)("");return(0,t.useEffect)((()=>{!async function(e,o){const n=await fetch(e);o(await n.text())}(o,r)}),[]),(0,c.jsx)(i.A,{title:s??o,language:n,showLineNumbers:!0,children:a})}}}]);
@@ -1 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[583],{7143:(e,t,s)=>{s.r(t),s.d(t,{default:()=>b});var n=s(4164),o=s(8774),r=s(4586),i=s(781),l=s(1107);const c={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var a=s(4848);const d=[{title:"Automated builds \ud83d\udee0\ufe0f",description:(0,a.jsx)(a.Fragment,{children:"Build auto versioned docker images from git repos, trigger builds on git push"})},{title:"Deploy docker containers \ud83d\ude80",description:(0,a.jsx)(a.Fragment,{children:"Deploy containers, deploy docker compose, see uptime and logs across all your servers"})},{title:"Powered by Rust \ud83e\udd80",description:(0,a.jsx)(a.Fragment,{children:"The core API and periphery agent are written in Rust"})}];function h(e){let{title:t,description:s}=e;return(0,a.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,a.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,a.jsx)(l.A,{as:"h3",children:t}),(0,a.jsx)("p",{children:s})]})})}function u(){return(0,a.jsx)("section",{className:c.features,children:(0,a.jsx)("div",{className:"container",children:(0,a.jsx)("div",{className:"row",children:d.map(((e,t)=>(0,a.jsx)(h,{...e},t)))})})})}const m={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};s(6540);function x(e){let{width:t="4rem"}=e;return(0,a.jsx)("img",{style:{width:t,height:"auto",opacity:.7},src:"img/monitor-lizard.png",alt:"monitor-lizard"})}function p(){const{siteConfig:e}=(0,r.A)();return(0,a.jsx)("header",{className:(0,n.A)("hero hero--primary",m.heroBanner),children:(0,a.jsxs)("div",{className:"container",children:[(0,a.jsx)("div",{style:{display:"flex",gap:"1rem",justifyContent:"center"},children:(0,a.jsxs)("div",{style:{position:"relative"},children:[(0,a.jsx)(x,{width:"600px"}),(0,a.jsx)("h1",{className:"hero__title",style:{margin:0,position:"absolute",top:"40%",left:"50%",transform:"translate(-50%, -50%)"},children:"Komodo"})]})}),(0,a.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,a.jsx)("div",{style:{display:"flex",justifyContent:"center"},children:(0,a.jsxs)("div",{className:m.buttons,children:[(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"/docs/intro",children:"Docs"}),(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"https://github.com/mbecker20/komodo",children:"Github"}),(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"https://github.com/mbecker20/komodo#screenshots",style:{width:"100%",boxSizing:"border-box",gridColumn:"span 2"},children:"Screenshots"}),(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"https://demo.komo.do",style:{width:"100%",boxSizing:"border-box",gridColumn:"span 2"},children:"Demo"})]})})]})})}function b(){const{siteConfig:e}=(0,r.A)();return(0,a.jsxs)(i.A,{title:"Home",description:e.tagline,children:[(0,a.jsx)(p,{}),(0,a.jsx)("main",{children:(0,a.jsx)(u,{})})]})}}}]);
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[583],{7143:(e,t,s)=>{s.r(t),s.d(t,{default:()=>g});var n=s(4164),o=s(8774),i=s(4586),r=s(781),l=s(1107);const c={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var a=s(4848);const d=[{title:"Automated builds \ud83d\udee0\ufe0f",description:(0,a.jsx)(a.Fragment,{children:"Build auto versioned docker images from git repos, trigger builds on git push"})},{title:"Deploy docker containers \ud83d\ude80",description:(0,a.jsx)(a.Fragment,{children:"Deploy containers, deploy docker compose, see uptime and logs across all your servers"})},{title:"Powered by Rust \ud83e\udd80",description:(0,a.jsx)(a.Fragment,{children:"The core API and periphery agent are written in Rust"})}];function h(e){let{title:t,description:s}=e;return(0,a.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,a.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,a.jsx)(l.A,{as:"h3",children:t}),(0,a.jsx)("p",{children:s})]})})}function u(){return(0,a.jsx)("section",{className:c.features,children:(0,a.jsx)("div",{className:"container",children:(0,a.jsx)("div",{className:"row",children:d.map(((e,t)=>(0,a.jsx)(h,{...e},t)))})})})}const m={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};s(6540);function x(e){let{width:t="4rem"}=e;return(0,a.jsx)("img",{style:{width:t,height:"auto",opacity:.7},src:"img/monitor-lizard.png",alt:"monitor-lizard"})}function p(){const{siteConfig:e}=(0,i.A)();return(0,a.jsx)("header",{className:(0,n.A)("hero hero--primary",m.heroBanner),children:(0,a.jsxs)("div",{className:"container",children:[(0,a.jsx)("div",{style:{display:"flex",gap:"1rem",justifyContent:"center"},children:(0,a.jsxs)("div",{style:{position:"relative"},children:[(0,a.jsx)(x,{width:"600px"}),(0,a.jsx)("h1",{className:"hero__title",style:{margin:0,position:"absolute",top:"40%",left:"50%",transform:"translate(-50%, -50%)"},children:"Komodo"})]})}),(0,a.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,a.jsx)("div",{style:{display:"flex",justifyContent:"center"},children:(0,a.jsxs)("div",{className:m.buttons,children:[(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"/docs/intro",children:"Docs"}),(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"https://github.com/moghtech/komodo",children:"Github"}),(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"https://github.com/moghtech/komodo#screenshots",style:{width:"100%",boxSizing:"border-box",gridColumn:"span 2"},children:"Screenshots"}),(0,a.jsx)(o.A,{className:"button button--secondary button--lg",to:"https://demo.komo.do",style:{width:"100%",boxSizing:"border-box",gridColumn:"span 2"},children:"Demo"})]})})]})})}function g(){const{siteConfig:e}=(0,i.A)();return(0,a.jsxs)(r.A,{title:"Home",description:e.tagline,children:[(0,a.jsx)(p,{}),(0,a.jsx)("main",{children:(0,a.jsx)(u,{})})]})}}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[92],{5918:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>h,toc:()=>a});var n=s(4848),o=s(8453);const i={},r="File Paths",h={id:"file-paths",title:"File Paths",description:"When working with Komodo, you might have to configure file or directory paths.",source:"@site/docs/file-paths.md",sourceDirName:".",slug:"/file-paths",permalink:"/docs/file-paths",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/file-paths.md",tags:[],version:"current",frontMatter:{}},l={},a=[{value:"Relative Paths",id:"relative-paths",level:2},{value:"Implementation",id:"implementation",level:3},{value:"Docker Volume Paths",id:"docker-volume-paths",level:2}];function c(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"file-paths",children:"File Paths"})}),"\n",(0,n.jsx)(t.p,{children:"When working with Komodo, you might have to configure file or directory paths."}),"\n",(0,n.jsx)(t.h2,{id:"relative-paths",children:"Relative Paths"}),"\n",(0,n.jsx)(t.p,{children:"Where possible, it is better to use relative file paths. Using relative file paths removes the connection between the process being run and the particular server it runs on, making it easier to move things between servers."}),"\n",(0,n.jsx)(t.p,{children:"Where you see relative paths:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"setting the build directory and path of the Dockerfile"}),"\n",(0,n.jsx)(t.li,{children:"setting a pre build command path"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"For all of the above, the path can be given relative to the root of the configured repo"}),"\n",(0,n.jsx)(t.p,{children:"The one exception is the Dockerfile path, which is given relative to the build directory (This is done by Docker itself, and this pattern matches usage of the Docker CLI)."}),"\n",(0,n.jsx)(t.p,{children:"There are 3 kinds of paths to pass:"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["to specify the root of the repo, use ",(0,n.jsx)(t.code,{children:"."})," as the path"]}),"\n",(0,n.jsxs)(t.li,{children:["to specify a folder in the repo, pass it with ",(0,n.jsx)(t.strong,{children:"no"})," preceding ",(0,n.jsx)(t.code,{children:"/"}),". For example, ",(0,n.jsx)(t.code,{children:"example_folder"})," or ",(0,n.jsx)(t.code,{children:"folder1/folder2"})]}),"\n",(0,n.jsxs)(t.li,{children:["to specify an absolute path on the servers filesystem, use a preceding slash, eg. ",(0,n.jsx)(t.code,{children:"/home/ubuntu/example"}),". This way should only be used if absolutely necessary, like when passing host paths when configuring docker volumes."]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"implementation",children:"Implementation"}),"\n",(0,n.jsxs)(t.p,{children:["Relative file paths are joined with the path of the repo on the system using a Rust ",(0,n.jsx)(t.a,{href:"https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.push",children:"PathBuf"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"docker-volume-paths",children:"Docker Volume Paths"}),"\n",(0,n.jsxs)(t.p,{children:["These are passed directly to the Docker CLI using ",(0,n.jsx)(t.code,{children:"--volume /path/on/system:/path/in/container"}),". So for these, the same rules apply as when using Docker on the command line. Paths here should usually be given as absolute. It's also probably best to avoid usage of ",(0,n.jsx)(t.code,{children:"~"})," or environment variables like ",(0,n.jsx)(t.code,{children:"$HOME"}),", as this may lead to unexpected behavior."]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>h});var n=s(6540);const o={},i=n.createContext(o);function r(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function h(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]);
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[92],{5918:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>h,toc:()=>a});var n=s(4848),o=s(8453);const i={},r="File Paths",h={id:"file-paths",title:"File Paths",description:"When working with Komodo, you might have to configure file or directory paths.",source:"@site/docs/file-paths.md",sourceDirName:".",slug:"/file-paths",permalink:"/docs/file-paths",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/file-paths.md",tags:[],version:"current",frontMatter:{}},l={},a=[{value:"Relative Paths",id:"relative-paths",level:2},{value:"Implementation",id:"implementation",level:3},{value:"Docker Volume Paths",id:"docker-volume-paths",level:2}];function c(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"file-paths",children:"File Paths"})}),"\n",(0,n.jsx)(t.p,{children:"When working with Komodo, you might have to configure file or directory paths."}),"\n",(0,n.jsx)(t.h2,{id:"relative-paths",children:"Relative Paths"}),"\n",(0,n.jsx)(t.p,{children:"Where possible, it is better to use relative file paths. Using relative file paths removes the connection between the process being run and the particular server it runs on, making it easier to move things between servers."}),"\n",(0,n.jsx)(t.p,{children:"Where you see relative paths:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"setting the build directory and path of the Dockerfile"}),"\n",(0,n.jsx)(t.li,{children:"setting a pre build command path"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"For all of the above, the path can be given relative to the root of the configured repo"}),"\n",(0,n.jsx)(t.p,{children:"The one exception is the Dockerfile path, which is given relative to the build directory (This is done by Docker itself, and this pattern matches usage of the Docker CLI)."}),"\n",(0,n.jsx)(t.p,{children:"There are 3 kinds of paths to pass:"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["to specify the root of the repo, use ",(0,n.jsx)(t.code,{children:"."})," as the path"]}),"\n",(0,n.jsxs)(t.li,{children:["to specify a folder in the repo, pass it with ",(0,n.jsx)(t.strong,{children:"no"})," preceding ",(0,n.jsx)(t.code,{children:"/"}),". For example, ",(0,n.jsx)(t.code,{children:"example_folder"})," or ",(0,n.jsx)(t.code,{children:"folder1/folder2"})]}),"\n",(0,n.jsxs)(t.li,{children:["to specify an absolute path on the servers filesystem, use a preceding slash, eg. ",(0,n.jsx)(t.code,{children:"/home/ubuntu/example"}),". This way should only be used if absolutely necessary, like when passing host paths when configuring docker volumes."]}),"\n"]}),"\n",(0,n.jsx)(t.h3,{id:"implementation",children:"Implementation"}),"\n",(0,n.jsxs)(t.p,{children:["Relative file paths are joined with the path of the repo on the system using a Rust ",(0,n.jsx)(t.a,{href:"https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.push",children:"PathBuf"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"docker-volume-paths",children:"Docker Volume Paths"}),"\n",(0,n.jsxs)(t.p,{children:["These are passed directly to the Docker CLI using ",(0,n.jsx)(t.code,{children:"--volume /path/on/system:/path/in/container"}),". So for these, the same rules apply as when using Docker on the command line. Paths here should usually be given as absolute. It's also probably best to avoid usage of ",(0,n.jsx)(t.code,{children:"~"})," or environment variables like ",(0,n.jsx)(t.code,{children:"$HOME"}),", as this may lead to unexpected behavior."]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>h});var n=s(6540);const o={},i=n.createContext(o);function r(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function h(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[624],{6933:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var o=n(4848),s=n(8453);const i={},c="API and Clients",a={id:"api",title:"API and Clients",description:"Komodo Core exposes an RPC-like HTTP API to read data, write configuration, and execute actions.",source:"@site/docs/api.md",sourceDirName:".",slug:"/api",permalink:"/docs/api",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/api.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Version Upgrades",permalink:"/docs/version-upgrades"},next:{title:"Development",permalink:"/docs/development"}},r={},d=[{value:"Rust Client",id:"rust-client",level:2},{value:"Typescript Client",id:"typescript-client",level:2}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"api-and-clients",children:"API and Clients"})}),"\n",(0,o.jsxs)(t.p,{children:["Komodo Core exposes an RPC-like HTTP API to read data, write configuration, and execute actions.\nThere are typesafe clients available in\n",(0,o.jsx)(t.a,{href:"/docs/api#rust-client",children:(0,o.jsx)(t.strong,{children:"Rust"})})," and ",(0,o.jsx)(t.a,{href:"/docs/api#typescript-client",children:(0,o.jsx)(t.strong,{children:"Typescript"})}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The full API documentation is ",(0,o.jsx)(t.a,{href:"https://docs.rs/komodo_client/latest/komodo_client/api/index.html",children:(0,o.jsx)(t.strong,{children:"available here"})}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"rust-client",children:"Rust Client"}),"\n",(0,o.jsxs)(t.p,{children:["The Rust client is published to crates.io at ",(0,o.jsx)(t.a,{href:"https://crates.io/crates/komodo_client",children:"komodo_client"}),"."]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-rust",children:'let komodo = KomodoClient::new("https://demo.komo.do", "your_key", "your_secret")\n .with_healthcheck()\n .await?;\n\nlet stacks = komodo.read(ListStacks::default()).await?;\n\nlet update = komodo\n .execute(DeployStack {\n stack: stacks[0].name.clone(),\n stop_time: None\n })\n .await?;\n'})}),"\n",(0,o.jsx)(t.h2,{id:"typescript-client",children:"Typescript Client"}),"\n",(0,o.jsxs)(t.p,{children:["The Typescript client is published to NPM at ",(0,o.jsx)(t.a,{href:"https://www.npmjs.com/package/komodo_client",children:"komodo_client"}),"."]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-ts",children:'import { KomodoClient, Types } from "komodo_client";\n\nconst komodo = KomodoClient("https://demo.komo.do", {\n type: "api-key",\n params: {\n api_key: "your_key",\n secret: "your secret",\n },\n});\n\n// Inferred as Types.StackListItem[]\nconst stacks = await komodo.read("ListStacks", {});\n\n// Inferred as Types.Update\nconst update = await komodo.execute("DeployStack", {\n stack: stacks[0].name,\n});\n'})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>a});var o=n(6540);const s={},i=o.createContext(s);function c(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]);
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[624],{6933:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var o=n(4848),s=n(8453);const i={},c="API and Clients",a={id:"api",title:"API and Clients",description:"Komodo Core exposes an RPC-like HTTP API to read data, write configuration, and execute actions.",source:"@site/docs/api.md",sourceDirName:".",slug:"/api",permalink:"/docs/api",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/api.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Version Upgrades",permalink:"/docs/version-upgrades"},next:{title:"Development",permalink:"/docs/development"}},r={},d=[{value:"Rust Client",id:"rust-client",level:2},{value:"Typescript Client",id:"typescript-client",level:2}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"api-and-clients",children:"API and Clients"})}),"\n",(0,o.jsxs)(t.p,{children:["Komodo Core exposes an RPC-like HTTP API to read data, write configuration, and execute actions.\nThere are typesafe clients available in\n",(0,o.jsx)(t.a,{href:"/docs/api#rust-client",children:(0,o.jsx)(t.strong,{children:"Rust"})})," and ",(0,o.jsx)(t.a,{href:"/docs/api#typescript-client",children:(0,o.jsx)(t.strong,{children:"Typescript"})}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The full API documentation is ",(0,o.jsx)(t.a,{href:"https://docs.rs/komodo_client/latest/komodo_client/api/index.html",children:(0,o.jsx)(t.strong,{children:"available here"})}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"rust-client",children:"Rust Client"}),"\n",(0,o.jsxs)(t.p,{children:["The Rust client is published to crates.io at ",(0,o.jsx)(t.a,{href:"https://crates.io/crates/komodo_client",children:"komodo_client"}),"."]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-rust",children:'let komodo = KomodoClient::new("https://demo.komo.do", "your_key", "your_secret")\n .with_healthcheck()\n .await?;\n\nlet stacks = komodo.read(ListStacks::default()).await?;\n\nlet update = komodo\n .execute(DeployStack {\n stack: stacks[0].name.clone(),\n stop_time: None\n })\n .await?;\n'})}),"\n",(0,o.jsx)(t.h2,{id:"typescript-client",children:"Typescript Client"}),"\n",(0,o.jsxs)(t.p,{children:["The Typescript client is published to NPM at ",(0,o.jsx)(t.a,{href:"https://www.npmjs.com/package/komodo_client",children:"komodo_client"}),"."]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-ts",children:'import { KomodoClient, Types } from "komodo_client";\n\nconst komodo = KomodoClient("https://demo.komo.do", {\n type: "api-key",\n params: {\n api_key: "your_key",\n secret: "your secret",\n },\n});\n\n// Inferred as Types.StackListItem[]\nconst stacks = await komodo.read("ListStacks", {});\n\n// Inferred as Types.Update\nconst update = await komodo.execute("DeployStack", {\n stack: stacks[0].name,\n});\n'})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>a});var o=n(6540);const s={},i=o.createContext(s);function c(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[663],{487:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=t(4848),o=t(8453);const s={},i="Version Upgrades",a={id:"version-upgrades",title:"Version Upgrades",description:"Most version upgrades only require a redeployment of the Core container after pulling the latest version, and are fully backward compatible with the periphery clients, which may be updated later on as convenient. This is the default, and will be the case unless specifically mentioned in the version release notes.",source:"@site/docs/version-upgrades.md",sourceDirName:".",slug:"/version-upgrades",permalink:"/docs/version-upgrades",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/version-upgrades.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Configuring Webhooks",permalink:"/docs/webhooks"},next:{title:"API and Clients",permalink:"/docs/api"}},c={},d=[];function l(e){const n={a:"a",h1:"h1",header:"header",p:"p",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"version-upgrades",children:"Version Upgrades"})}),"\n",(0,r.jsxs)(n.p,{children:["Most version upgrades only require a redeployment of the Core container after pulling the latest version, and are fully backward compatible with the periphery clients, which may be updated later on as convenient. This is the default, and will be the case unless specifically mentioned in the ",(0,r.jsx)(n.a,{href:"https://github.com/moghtech/komodo/releases",children:"version release notes"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Some Core API upgrades may change behavior such as building / cloning, and require updating the Periphery binaries to match the Core version before this functionality can be restored. This will be specifically mentioned in the release notes."}),"\n",(0,r.jsxs)(n.p,{children:["Additionally, some Core API upgrades may include database schema changes, and require a database migration. This can be accomplished by using the ",(0,r.jsx)(n.a,{href:"https://github.com/moghtech/komodo/blob/main/bin/migrator/README.md",children:"komodo migrator"})," for the particular version upgrade before upgrading the Core API container."]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var r=t(6540);const o={},s=r.createContext(o);function i(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]);
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[663],{487:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var r=t(4848),s=t(8453);const i={},o="Version Upgrades",a={id:"version-upgrades",title:"Version Upgrades",description:"Most version upgrades only require a redeployment of the Core container after pulling the latest version, and are fully backward compatible with the periphery clients, which may be updated later on as convenient. This is the default, and will be the case unless specifically mentioned in the version release notes.",source:"@site/docs/version-upgrades.md",sourceDirName:".",slug:"/version-upgrades",permalink:"/docs/version-upgrades",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/version-upgrades.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Configuring Webhooks",permalink:"/docs/webhooks"},next:{title:"API and Clients",permalink:"/docs/api"}},c={},d=[];function l(e){const n={a:"a",h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"version-upgrades",children:"Version Upgrades"})}),"\n",(0,r.jsxs)(n.p,{children:["Most version upgrades only require a redeployment of the Core container after pulling the latest version, and are fully backward compatible with the periphery clients, which may be updated later on as convenient. This is the default, and will be the case unless specifically mentioned in the ",(0,r.jsx)(n.a,{href:"https://github.com/mbecker20/komodo/releases",children:"version release notes"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"Some Core API upgrades may change behavior such as building / cloning, and require updating the Periphery binaries to match the Core version before this functionality can be restored. This will be specifically mentioned in the release notes."}),"\n",(0,r.jsxs)(n.p,{children:["Additionally, some Core API upgrades may include database schema changes, and require a database migration. This can be accomplished by using the ",(0,r.jsx)(n.a,{href:"https://github.com/mbecker20/komodo/blob/main/bin/migrator/README.md",children:"komodo migrator"})," for the particular version upgrade before upgrading the Core API container."]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[848],{5846:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var r=n(4848),i=n(8453),o=n(5871);const s={slug:"/build-images"},c="Building Images",l={id:"build-images/index",title:"Building Images",description:"Komodo builds docker images by cloning the source repository from the configured git provider, running docker build,",source:"@site/docs/build-images/index.mdx",sourceDirName:"build-images",slug:"/build-images",permalink:"/docs/build-images",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/build-images/index.mdx",tags:[],version:"current",frontMatter:{slug:"/build-images"},sidebar:"docs",previous:{title:"Connect More Servers",permalink:"/docs/connect-servers"},next:{title:"Configuration",permalink:"/docs/build-images/configuration"}},a={},u=[];function d(e){const t={code:"code",h1:"h1",header:"header",p:"p",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"building-images",children:"Building Images"})}),"\n",(0,r.jsxs)(t.p,{children:["Komodo builds docker images by cloning the source repository from the configured git provider, running ",(0,r.jsx)(t.code,{children:"docker build"}),",\nand pushing the resulting image to the configured docker registry. Any repo containing a ",(0,r.jsx)(t.code,{children:"Dockerfile"})," is buildable using this method."]}),"\n","\n",(0,r.jsx)(o.A,{})]})}function m(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5871:(e,t,n)=>{n.d(t,{A:()=>C});var r=n(6540),i=n(4164),o=n(6972),s=n(8774),c=n(4586);const l=["zero","one","two","few","many","other"];function a(e){return l.filter((t=>e.includes(t)))}const u={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function d(){const{i18n:{currentLocale:e}}=(0,c.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),u}}),[e])}function m(){const e=d();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${r.length}: ${e}`);const i=n.select(t),o=n.pluralForms.indexOf(i);return r[Math.min(o,r.length-1)]}(n,t,e)}}var h=n(6654),g=n(1312),f=n(1107);const p={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};var x=n(4848);function b(e){let{href:t,children:n}=e;return(0,x.jsx)(s.A,{href:t,className:(0,i.A)("card padding--lg",p.cardContainer),children:n})}function j(e){let{href:t,icon:n,title:r,description:o}=e;return(0,x.jsxs)(b,{href:t,children:[(0,x.jsxs)(f.A,{as:"h2",className:(0,i.A)("text--truncate",p.cardTitle),title:r,children:[n," ",r]}),o&&(0,x.jsx)("p",{className:(0,i.A)("text--truncate",p.cardDescription),title:o,children:o})]})}function k(e){let{item:t}=e;const n=(0,o.Nr)(t),r=function(){const{selectMessage:e}=m();return t=>e(t,(0,g.T)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t}))}();return n?(0,x.jsx)(j,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??r(t.items.length)}):null}function y(e){let{item:t}=e;const n=(0,h.A)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,o.cC)(t.docId??void 0);return(0,x.jsx)(j,{href:t.href,icon:n,title:t.label,description:t.description??r?.description})}function v(e){let{item:t}=e;switch(t.type){case"link":return(0,x.jsx)(y,{item:t});case"category":return(0,x.jsx)(k,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function w(e){let{className:t}=e;const n=(0,o.$S)();return(0,x.jsx)(C,{items:n.items,className:t})}function C(e){const{items:t,className:n}=e;if(!t)return(0,x.jsx)(w,{...e});const r=(0,o.d1)(t);return(0,x.jsx)("section",{className:(0,i.A)("row",n),children:r.map(((e,t)=>(0,x.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,x.jsx)(v,{item:e})},t)))})}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var r=n(6540);const i={},o=r.createContext(i);function s(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]);
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[848],{5846:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>u});var r=n(4848),i=n(8453),o=n(5871);const s={slug:"/build-images"},c="Building Images",l={id:"build-images/index",title:"Building Images",description:"Komodo builds docker images by cloning the source repository from the configured git provider, running docker build,",source:"@site/docs/build-images/index.mdx",sourceDirName:"build-images",slug:"/build-images",permalink:"/docs/build-images",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/build-images/index.mdx",tags:[],version:"current",frontMatter:{slug:"/build-images"},sidebar:"docs",previous:{title:"Connect More Servers",permalink:"/docs/connect-servers"},next:{title:"Configuration",permalink:"/docs/build-images/configuration"}},a={},u=[];function d(e){const t={code:"code",h1:"h1",header:"header",p:"p",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"building-images",children:"Building Images"})}),"\n",(0,r.jsxs)(t.p,{children:["Komodo builds docker images by cloning the source repository from the configured git provider, running ",(0,r.jsx)(t.code,{children:"docker build"}),",\nand pushing the resulting image to the configured docker registry. Any repo containing a ",(0,r.jsx)(t.code,{children:"Dockerfile"})," is buildable using this method."]}),"\n","\n",(0,r.jsx)(o.A,{})]})}function m(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5871:(e,t,n)=>{n.d(t,{A:()=>C});var r=n(6540),i=n(4164),o=n(6972),s=n(8774),c=n(4586);const l=["zero","one","two","few","many","other"];function a(e){return l.filter((t=>e.includes(t)))}const u={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function d(){const{i18n:{currentLocale:e}}=(0,c.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),u}}),[e])}function m(){const e=d();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms.join(",")}), but the message contains ${r.length}: ${e}`);const i=n.select(t),o=n.pluralForms.indexOf(i);return r[Math.min(o,r.length-1)]}(n,t,e)}}var g=n(6654),h=n(1312),f=n(1107);const p={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};var x=n(4848);function b(e){let{href:t,children:n}=e;return(0,x.jsx)(s.A,{href:t,className:(0,i.A)("card padding--lg",p.cardContainer),children:n})}function j(e){let{href:t,icon:n,title:r,description:o}=e;return(0,x.jsxs)(b,{href:t,children:[(0,x.jsxs)(f.A,{as:"h2",className:(0,i.A)("text--truncate",p.cardTitle),title:r,children:[n," ",r]}),o&&(0,x.jsx)("p",{className:(0,i.A)("text--truncate",p.cardDescription),title:o,children:o})]})}function k(e){let{item:t}=e;const n=(0,o.Nr)(t),r=function(){const{selectMessage:e}=m();return t=>e(t,(0,h.T)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t}))}();return n?(0,x.jsx)(j,{href:n,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??r(t.items.length)}):null}function y(e){let{item:t}=e;const n=(0,g.A)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,o.cC)(t.docId??void 0);return(0,x.jsx)(j,{href:t.href,icon:n,title:t.label,description:t.description??r?.description})}function v(e){let{item:t}=e;switch(t.type){case"link":return(0,x.jsx)(y,{item:t});case"category":return(0,x.jsx)(k,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function w(e){let{className:t}=e;const n=(0,o.$S)();return(0,x.jsx)(C,{items:n.items,className:t})}function C(e){const{items:t,className:n}=e;if(!t)return(0,x.jsx)(w,{...e});const r=(0,o.d1)(t);return(0,x.jsx)("section",{className:(0,i.A)("row",n),children:r.map(((e,t)=>(0,x.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,x.jsx)(v,{item:e})},t)))})}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var r=n(6540);const i={},o=r.createContext(i);function s(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[549],{6175:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>d});var i=n(4848),o=n(8453);const s={},a="Image Versioning",r={id:"build-images/versioning",title:"Image Versioning",description:"Komodo uses a major.minor.patch versioning scheme to Build versioning. By default, every RunBuild will auto increment the Build's version patch number, and push the image to docker hub with the version tag, as well as the latest tag. A tag containing the latest short commit hash at the time the repo was cloned will also be created.",source:"@site/docs/build-images/versioning.md",sourceDirName:"build-images",slug:"/build-images/versioning",permalink:"/docs/build-images/versioning",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/build-images/versioning.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Builders",permalink:"/docs/build-images/builders"},next:{title:"Deploy Containers",permalink:"/docs/deploy-containers/"}},c={},d=[];function l(e){const t={code:"code",h1:"h1",header:"header",p:"p",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"image-versioning",children:"Image Versioning"})}),"\n",(0,i.jsxs)(t.p,{children:["Komodo uses a major.minor.patch versioning scheme to Build versioning. By default, every RunBuild will auto increment the Build's version patch number, and push the image to docker hub with the version tag, as well as the ",(0,i.jsx)(t.code,{children:"latest"})," tag. A tag containing the latest short commit hash at the time the repo was cloned will also be created."]}),"\n",(0,i.jsxs)(t.p,{children:['You can also turn off the auto incrementing feature, and manage the version yourself. In addition, you can configure a "version tag" on the build. This will postfix the version tag / commit hash tag with a custom label. For example, an image tag of ',(0,i.jsx)(t.code,{children:"dev"})," will produce tags like ",(0,i.jsx)(t.code,{children:"image_name:1.1.1-dev"})," and ",(0,i.jsx)(t.code,{children:"image_name:h3c87c-dev"}),"."]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>r});var i=n(6540);const o={},s=i.createContext(o);function a(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]);
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[549],{6175:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>d});var i=n(4848),o=n(8453);const s={},a="Image Versioning",r={id:"build-images/versioning",title:"Image Versioning",description:"Komodo uses a major.minor.patch versioning scheme to Build versioning. By default, every RunBuild will auto increment the Build's version patch number, and push the image to docker hub with the version tag, as well as the latest tag. A tag containing the latest short commit hash at the time the repo was cloned will also be created.",source:"@site/docs/build-images/versioning.md",sourceDirName:"build-images",slug:"/build-images/versioning",permalink:"/docs/build-images/versioning",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/build-images/versioning.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Builders",permalink:"/docs/build-images/builders"},next:{title:"Deploy Containers",permalink:"/docs/deploy-containers/"}},c={},d=[];function l(e){const t={code:"code",h1:"h1",header:"header",p:"p",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"image-versioning",children:"Image Versioning"})}),"\n",(0,i.jsxs)(t.p,{children:["Komodo uses a major.minor.patch versioning scheme to Build versioning. By default, every RunBuild will auto increment the Build's version patch number, and push the image to docker hub with the version tag, as well as the ",(0,i.jsx)(t.code,{children:"latest"})," tag. A tag containing the latest short commit hash at the time the repo was cloned will also be created."]}),"\n",(0,i.jsxs)(t.p,{children:['You can also turn off the auto incrementing feature, and manage the version yourself. In addition, you can configure a "version tag" on the build. This will postfix the version tag / commit hash tag with a custom label. For example, an image tag of ',(0,i.jsx)(t.code,{children:"dev"})," will produce tags like ",(0,i.jsx)(t.code,{children:"image_name:1.1.1-dev"})," and ",(0,i.jsx)(t.code,{children:"image_name:h3c87c-dev"}),"."]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>r});var i=n(6540);const o={},s=i.createContext(o);function a(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[543],{1527:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>t,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var o=i(4848),s=i(8453);const r={},t="Pre-build command",d={id:"build-images/pre-build",title:"Pre-build command",description:"Sometimes a command needs to be run before running `docker build`, you can configure this in the pre build section.",source:"@site/docs/build-images/pre-build.md",sourceDirName:"build-images",slug:"/build-images/pre-build",permalink:"/docs/build-images/pre-build",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/build-images/pre-build.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Configuration",permalink:"/docs/build-images/configuration"},next:{title:"Builders",permalink:"/docs/build-images/builders"}},c={},l=[];function a(e){const n={code:"code",em:"em",h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"pre-build-command",children:"Pre-build command"})}),"\n",(0,o.jsxs)(n.p,{children:["Sometimes a command needs to be run before running ",(0,o.jsx)(n.code,{children:"docker build"}),", you can configure this in the ",(0,o.jsx)(n.em,{children:"pre build"})," section."]}),"\n",(0,o.jsxs)(n.p,{children:["There are two fields to pass for ",(0,o.jsx)(n.em,{children:"pre build"}),". the first is ",(0,o.jsx)(n.em,{children:"path"}),", which changes the working directory. To run the command in the root of the repo, just pass ",(0,o.jsx)(n.code,{children:"."}),". The second field is ",(0,o.jsx)(n.em,{children:"command"}),", this is the shell command to be executed after the repo is cloned."]}),"\n",(0,o.jsxs)(n.p,{children:["For example, say your repo had a folder in it called ",(0,o.jsx)(n.code,{children:"scripts"})," with a shell script ",(0,o.jsx)(n.code,{children:"on-clone.sh"}),". You would give ",(0,o.jsx)(n.em,{children:"path"})," as ",(0,o.jsx)(n.code,{children:"scripts"})," and command as ",(0,o.jsx)(n.code,{children:"sh on-clone.sh"}),". Or you could make ",(0,o.jsx)(n.em,{children:"path"})," just ",(0,o.jsx)(n.code,{children:"."})," and then the command would be ",(0,o.jsx)(n.code,{children:"sh scripts/on-clone.sh"}),". Either way works fine."]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>d});var o=i(6540);const s={},r=o.createContext(s);function t(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[543],{1527:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>t,metadata:()=>d,toc:()=>l});var o=i(4848),s=i(8453);const t={},r="Pre-build command",d={id:"build-images/pre-build",title:"Pre-build command",description:"Sometimes a command needs to be run before running `docker build`, you can configure this in the pre build section.",source:"@site/docs/build-images/pre-build.md",sourceDirName:"build-images",slug:"/build-images/pre-build",permalink:"/docs/build-images/pre-build",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/build-images/pre-build.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Configuration",permalink:"/docs/build-images/configuration"},next:{title:"Builders",permalink:"/docs/build-images/builders"}},c={},l=[];function a(e){const n={code:"code",em:"em",h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"pre-build-command",children:"Pre-build command"})}),"\n",(0,o.jsxs)(n.p,{children:["Sometimes a command needs to be run before running ",(0,o.jsx)(n.code,{children:"docker build"}),", you can configure this in the ",(0,o.jsx)(n.em,{children:"pre build"})," section."]}),"\n",(0,o.jsxs)(n.p,{children:["There are two fields to pass for ",(0,o.jsx)(n.em,{children:"pre build"}),". the first is ",(0,o.jsx)(n.em,{children:"path"}),", which changes the working directory. To run the command in the root of the repo, just pass ",(0,o.jsx)(n.code,{children:"."}),". The second field is ",(0,o.jsx)(n.em,{children:"command"}),", this is the shell command to be executed after the repo is cloned."]}),"\n",(0,o.jsxs)(n.p,{children:["For example, say your repo had a folder in it called ",(0,o.jsx)(n.code,{children:"scripts"})," with a shell script ",(0,o.jsx)(n.code,{children:"on-clone.sh"}),". You would give ",(0,o.jsx)(n.em,{children:"path"})," as ",(0,o.jsx)(n.code,{children:"scripts"})," and command as ",(0,o.jsx)(n.code,{children:"sh on-clone.sh"}),". Or you could make ",(0,o.jsx)(n.em,{children:"path"})," just ",(0,o.jsx)(n.code,{children:"."})," and then the command would be ",(0,o.jsx)(n.code,{children:"sh scripts/on-clone.sh"}),". Either way works fine."]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>d});var o=i(6540);const s={},t=o.createContext(s);function r(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[247],{2913:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var i=n(4848),o=n(8453);const a={},r="Container Management",s={id:"deploy-containers/lifetime-management",title:"Container Management",description:"The lifetime of a docker container is more like a virtual machine. They can be created, started, stopped, and destroyed. Komodo will display the state of the container and provides an API to manage all your container's lifetimes.",source:"@site/docs/deploy-containers/lifetime-management.md",sourceDirName:"deploy-containers",slug:"/deploy-containers/lifetime-management",permalink:"/docs/deploy-containers/lifetime-management",draft:!1,unlisted:!1,editUrl:"https://github.com/moghtech/komodo/tree/main/docsite/docs/deploy-containers/lifetime-management.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Configuration",permalink:"/docs/deploy-containers/configuration"},next:{title:"Docker Compose",permalink:"/docs/docker-compose"}},c={},d=[{value:"Stopping a Container",id:"stopping-a-container",level:3},{value:"Container Redeploy",id:"container-redeploy",level:3}];function l(e){const t={em:"em",h1:"h1",h3:"h3",header:"header",p:"p",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"container-management",children:"Container Management"})}),"\n",(0,i.jsx)(t.p,{children:"The lifetime of a docker container is more like a virtual machine. They can be created, started, stopped, and destroyed. Komodo will display the state of the container and provides an API to manage all your container's lifetimes."}),"\n",(0,i.jsx)(t.p,{children:"This is achieved internally by running the appropriate docker command for the requested action (docker stop, docker start, etc)."}),"\n",(0,i.jsx)(t.h3,{id:"stopping-a-container",children:"Stopping a Container"}),"\n",(0,i.jsxs)(t.p,{children:["Sometimes you want to stop a running application but preserve its logs and configuration, either to be restarted later or to view the logs at a later time. It is more like ",(0,i.jsx)(t.em,{children:"pausing"})," the application with its current config, as no configuration (like environment variable, volume mounts, etc.) will be changed when the container is started again."]}),"\n",(0,i.jsxs)(t.p,{children:["Note that in order to restart an application with updated configuration, it must be ",(0,i.jsx)(t.em,{children:"redeployed"}),". stopping and starting a container again will keep all configuration as it was when the container was initially created."]}),"\n",(0,i.jsx)(t.h3,{id:"container-redeploy",children:"Container Redeploy"}),"\n",(0,i.jsx)(t.p,{children:"Redeploying is the action of destroying a container and recreating it. If you update deployment config, these changes will not take effect until the container is redeployed. Just note this will destroy the previous containers logs along with the container itself."})]})}function p(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>s});var i=n(6540);const o={},a=i.createContext(o);function r(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(a.Provider,{value:t},e.children)}}}]);
-1
View File
@@ -1 +0,0 @@
"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[247],{2913:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var i=t(4848),o=t(8453);const a={},r="Container Management",s={id:"deploy-containers/lifetime-management",title:"Container Management",description:"The lifetime of a docker container is more like a virtual machine. They can be created, started, stopped, and destroyed. Komodo will display the state of the container and provides an API to manage all your container's lifetimes.",source:"@site/docs/deploy-containers/lifetime-management.md",sourceDirName:"deploy-containers",slug:"/deploy-containers/lifetime-management",permalink:"/docs/deploy-containers/lifetime-management",draft:!1,unlisted:!1,editUrl:"https://github.com/mbecker20/komodo/tree/main/docsite/docs/deploy-containers/lifetime-management.md",tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Configuration",permalink:"/docs/deploy-containers/configuration"},next:{title:"Docker Compose",permalink:"/docs/docker-compose"}},c={},d=[{value:"Stopping a Container",id:"stopping-a-container",level:3},{value:"Container Redeploy",id:"container-redeploy",level:3}];function l(e){const n={em:"em",h1:"h1",h3:"h3",header:"header",p:"p",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"container-management",children:"Container Management"})}),"\n",(0,i.jsx)(n.p,{children:"The lifetime of a docker container is more like a virtual machine. They can be created, started, stopped, and destroyed. Komodo will display the state of the container and provides an API to manage all your container's lifetimes."}),"\n",(0,i.jsx)(n.p,{children:"This is achieved internally by running the appropriate docker command for the requested action (docker stop, docker start, etc)."}),"\n",(0,i.jsx)(n.h3,{id:"stopping-a-container",children:"Stopping a Container"}),"\n",(0,i.jsxs)(n.p,{children:["Sometimes you want to stop a running application but preserve its logs and configuration, either to be restarted later or to view the logs at a later time. It is more like ",(0,i.jsx)(n.em,{children:"pausing"})," the application with its current config, as no configuration (like environment variable, volume mounts, etc.) will be changed when the container is started again."]}),"\n",(0,i.jsxs)(n.p,{children:["Note that in order to restart an application with updated configuration, it must be ",(0,i.jsx)(n.em,{children:"redeployed"}),". stopping and starting a container again will keep all configuration as it was when the container was initially created."]}),"\n",(0,i.jsx)(n.h3,{id:"container-redeploy",children:"Container Redeploy"}),"\n",(0,i.jsx)(n.p,{children:"Redeploying is the action of destroying a container and recreating it. If you update deployment config, these changes will not take effect until the container is redeployed. Just note this will destroy the previous containers logs along with the container itself."})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>s});var i=t(6540);const o={},a=i.createContext(o);function r(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]);
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
(()=>{"use strict";var e,a,t,r,c,f={},o={};function n(e){var a=o[e];if(void 0!==a)return a.exports;var t=o[e]={exports:{}};return f[e].call(t.exports,t,t.exports,n),t.exports}n.m=f,e=[],n.O=(a,t,r,c)=>{if(!t){var f=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],c=e[i][2];for(var o=!0,b=0;b<t.length;b++)(!1&c||f>=c)&&Object.keys(n.O).every((e=>n.O[e](t[b])))?t.splice(b--,1):(o=!1,c<f&&(f=c));if(o){e.splice(i--,1);var d=r();void 0!==d&&(a=d)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[t,r,c]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);n.r(c);var f={};a=a||[null,t({}),t([]),t(t)];for(var o=2&r&&e;"object"==typeof o&&!~a.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,n.d(c,f),c},n.d=(e,a)=>{for(var t in a)n.o(a,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((a,t)=>(n.f[t](e,a),a)),[])),n.u=e=>"assets/js/"+({48:"a94703ab",92:"3734296e",98:"a7bd4aaa",100:"ef1bbce5",235:"a7456010",238:"f600b847",247:"f8238c17",401:"17896441",423:"8f030830",464:"2f7566f9",469:"1bd19f0c",531:"75245258",535:"5ea303bc",543:"c65a6c17",549:"a5a01e01",552:"669fcf45",580:"209736a1",583:"1df93b7f",624:"5fbc5cf1",636:"a5c9d4c4",647:"5e95c892",648:"a9cd8699",663:"6aab5236",742:"aba21aa0",782:"39c35b2c",842:"b19e82df",846:"c54f4afd",848:"8b13a4b4",849:"0058b4c6",864:"d92a3c43",943:"79c522c5",947:"ef9e0e28",976:"0e384e19",995:"ef526b88"}[e]||e)+"."+{48:"648183aa",92:"187b8a97",98:"a66a8b25",100:"a58422fb",235:"b82eb55b",237:"2f3e1c0f",238:"a11bb485",247:"caff83ad",394:"a2bd9e37",401:"31a9f0c1",423:"9c0bc802",464:"1ea46b68",469:"357d1dc4",531:"323ab3b0",535:"e6ad1265",543:"23532b2a",549:"cfd37f67",552:"9ce9f393",580:"256ac77d",583:"e0f46f49",624:"af350864",636:"24d158b1",647:"825bac72",648:"e624c656",663:"4f2a084e",742:"e2256b29",782:"d65ac76d",842:"b470a8ff",846:"7b612d79",848:"9bad5394",849:"89c353ce",864:"b9562b20",943:"28aca0dd",947:"7ebecfd6",976:"abcf3cdb",995:"f1eb480d"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="docsite:",n.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var o,b;if(void 0!==t)for(var d=document.getElementsByTagName("script"),i=0;i<d.length;i++){var u=d[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==c+t){o=u;break}}o||(b=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,n.nc&&o.setAttribute("nonce",n.nc),o.setAttribute("data-webpack",c+t),o.src=e),r[e]=[a];var l=(a,t)=>{o.onerror=o.onload=null,clearTimeout(s);var c=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),b&&document.head.appendChild(o)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"401",75245258:"531",a94703ab:"48","3734296e":"92",a7bd4aaa:"98",ef1bbce5:"100",a7456010:"235",f600b847:"238",f8238c17:"247","8f030830":"423","2f7566f9":"464","1bd19f0c":"469","5ea303bc":"535",c65a6c17:"543",a5a01e01:"549","669fcf45":"552","209736a1":"580","1df93b7f":"583","5fbc5cf1":"624",a5c9d4c4:"636","5e95c892":"647",a9cd8699:"648","6aab5236":"663",aba21aa0:"742","39c35b2c":"782",b19e82df:"842",c54f4afd:"846","8b13a4b4":"848","0058b4c6":"849",d92a3c43:"864","79c522c5":"943",ef9e0e28:"947","0e384e19":"976",ef526b88:"995"}[e]||e,n.p+n.u(e)},(()=>{var e={354:0,869:0};n.f.j=(a,t)=>{var r=n.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var f=n.p+n.u(a),o=new Error;n.l(f,(t=>{if(n.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;o.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,r[1](o)}}),"chunk-"+a,a)}},n.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,f=t[0],o=t[1],b=t[2],d=0;if(f.some((a=>0!==e[a]))){for(r in o)n.o(o,r)&&(n.m[r]=o[r]);if(b)var i=b(n)}for(a&&a(t);d<f.length;d++)c=f[d],n.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return n.O(i)},t=self.webpackChunkdocsite=self.webpackChunkdocsite||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})();
(()=>{"use strict";var e,a,t,r,f,c={},o={};function n(e){var a=o[e];if(void 0!==a)return a.exports;var t=o[e]={exports:{}};return c[e].call(t.exports,t,t.exports,n),t.exports}n.m=c,e=[],n.O=(a,t,r,f)=>{if(!t){var c=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],f=e[i][2];for(var o=!0,b=0;b<t.length;b++)(!1&f||c>=f)&&Object.keys(n.O).every((e=>n.O[e](t[b])))?t.splice(b--,1):(o=!1,f<c&&(c=f));if(o){e.splice(i--,1);var d=r();void 0!==d&&(a=d)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);n.r(f);var c={};a=a||[null,t({}),t([]),t(t)];for(var o=2&r&&e;"object"==typeof o&&!~a.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,n.d(f,c),f},n.d=(e,a)=>{for(var t in a)n.o(a,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((a,t)=>(n.f[t](e,a),a)),[])),n.u=e=>"assets/js/"+({48:"a94703ab",92:"3734296e",98:"a7bd4aaa",100:"ef1bbce5",235:"a7456010",238:"f600b847",247:"f8238c17",401:"17896441",423:"8f030830",464:"2f7566f9",469:"1bd19f0c",531:"75245258",535:"5ea303bc",543:"c65a6c17",549:"a5a01e01",552:"669fcf45",580:"209736a1",583:"1df93b7f",624:"5fbc5cf1",636:"a5c9d4c4",647:"5e95c892",648:"a9cd8699",663:"6aab5236",742:"aba21aa0",782:"39c35b2c",842:"b19e82df",846:"c54f4afd",848:"8b13a4b4",849:"0058b4c6",864:"d92a3c43",943:"79c522c5",947:"ef9e0e28",976:"0e384e19",995:"ef526b88"}[e]||e)+"."+{48:"648183aa",92:"a34e21bd",98:"a66a8b25",100:"90ebefc8",235:"b82eb55b",237:"2f3e1c0f",238:"e0e0cfeb",247:"9d59e94b",394:"a2bd9e37",401:"31a9f0c1",423:"94a0df8d",464:"a498b7f6",469:"3915991b",531:"e5f63ae6",535:"a72ba471",543:"3effb77f",549:"60457fec",552:"3c7598e9",580:"47e2b879",583:"7e9ef97e",624:"7b981e55",636:"c19c99ec",647:"825bac72",648:"6e3b5eeb",663:"28427783",742:"e2256b29",782:"8d063d1f",842:"ae0cec3c",846:"8ec27e24",848:"4b7a52d3",849:"89c353ce",864:"ed48ad6d",943:"273ac0b5",947:"0db1766d",976:"f2932478",995:"d9bb270f"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="docsite:",n.l=(e,a,t,c)=>{if(r[e])r[e].push(a);else{var o,b;if(void 0!==t)for(var d=document.getElementsByTagName("script"),i=0;i<d.length;i++){var u=d[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+t){o=u;break}}o||(b=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,n.nc&&o.setAttribute("nonce",n.nc),o.setAttribute("data-webpack",f+t),o.src=e),r[e]=[a];var l=(a,t)=>{o.onerror=o.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),f&&f.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),b&&document.head.appendChild(o)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"401",75245258:"531",a94703ab:"48","3734296e":"92",a7bd4aaa:"98",ef1bbce5:"100",a7456010:"235",f600b847:"238",f8238c17:"247","8f030830":"423","2f7566f9":"464","1bd19f0c":"469","5ea303bc":"535",c65a6c17:"543",a5a01e01:"549","669fcf45":"552","209736a1":"580","1df93b7f":"583","5fbc5cf1":"624",a5c9d4c4:"636","5e95c892":"647",a9cd8699:"648","6aab5236":"663",aba21aa0:"742","39c35b2c":"782",b19e82df:"842",c54f4afd:"846","8b13a4b4":"848","0058b4c6":"849",d92a3c43:"864","79c522c5":"943",ef9e0e28:"947","0e384e19":"976",ef526b88:"995"}[e]||e,n.p+n.u(e)},(()=>{var e={354:0,869:0};n.f.j=(a,t)=>{var r=n.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var c=n.p+n.u(a),o=new Error;n.l(c,(t=>{if(n.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;o.message="Loading chunk "+a+" failed.\n("+f+": "+c+")",o.name="ChunkLoadError",o.type=f,o.request=c,r[1](o)}}),"chunk-"+a,a)}},n.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,c=t[0],o=t[1],b=t[2],d=0;if(c.some((a=>0!==e[a]))){for(r in o)n.o(o,r)&&(n.m[r]=o[r]);if(b)var i=b(n)}for(a&&a(t);d<c.length;d++)f=c[d],n.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return n.O(i)},t=self.webpackChunkdocsite=self.webpackChunkdocsite||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})();
+4 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

+3 -3
View File
File diff suppressed because one or more lines are too long