import{_ as a,c as o,o as n,a6 as t}from"./chunks/framework.CHl2ywxc.js";const u=JSON.parse('{"title":"Deploy with Docker","description":"","frontmatter":{},"headers":[],"relativePath":"deployment/docker.md","filePath":"deployment/docker.md","lastUpdated":1755281500000}'),s={name:"deployment/docker.md"};function i(l,e,d,c,p,r){return n(),o("div",null,e[0]||(e[0]=[t(`<h1 id="deploy-with-docker" tabindex="-1">Deploy with Docker <a class="header-anchor" href="#deploy-with-docker" aria-label="Permalink to "Deploy with Docker""></a></h1><p>Two Docker setups are provided:</p><ol><li>Top-level <code>Dockerfile</code> (multi-stage) and <code>docker-compose.yml</code> for local dev</li><li><code>deploy/docker/Dockerfile</code> optimized for CI-built images and Koyeb</li></ol><h2 id="local-development" tabindex="-1">Local Development <a class="header-anchor" href="#local-development" aria-label="Permalink to "Local Development""></a></h2><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>docker compose up --build</span></span></code></pre></div><p>This uses the dev target with hot reload (<code>nodemon</code>) and maps your working directory into the container.</p><h2 id="production-image-ci" tabindex="-1">Production Image (CI) <a class="header-anchor" href="#production-image-ci" aria-label="Permalink to "Production Image (CI)""></a></h2><p>Build and push an image:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>docker build -f deploy/docker/Dockerfile -t ghcr.io/OWNER/REPO:latest .</span></span>
<span class="line"><span>docker push ghcr.io/OWNER/REPO:latest</span></span></code></pre></div><p>Run:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>docker run -p 3000:3000 \\</span></span>
<span class="line"><span> -e NODE_ENV=production \\</span></span>
<span class="line"><span> -e TOKEN_ENC_KEY=... \\</span></span>
<span class="line"><span> -e MASTER_BASE_URL=https://your.domain \\</span></span>
<span class="line"><span> ghcr.io/OWNER/REPO:latest</span></span></code></pre></div><h2 id="environment" tabindex="-1">Environment <a class="header-anchor" href="#environment" aria-label="Permalink to "Environment""></a></h2><ul><li>Set <code>TOKEN_ENC_KEY</code> in production</li><li>Set <code>MASTER_BASE_URL</code> if serving behind a proxy to ensure correct OAuth redirects</li><li>Inject <code>MASTER_OAUTH_CLIENT_SECRET</code> and other provider secrets via env</li></ul>`,13)]))}const m=a(s,[["render",i]]);export{u as __pageData,m as default};