diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..d823d1d --- /dev/null +++ b/Containerfile @@ -0,0 +1,22 @@ +# Stage 1: Build +FROM node:20-alpine AS builder +WORKDIR /app +COPY package*.json ./ +RUN npm ci +COPY . . +RUN npm run build +RUN npm prune --production + +# Stage 2: Run +FROM node:20-alpine +WORKDIR /app +COPY --from=builder /app/build ./build +COPY --from=builder /app/node_modules ./node_modules +COPY package.json . + +# Default SvelteKit production port +ENV PORT=3000 +EXPOSE 3000 + +# Start the app +CMD ["node", "build"] \ No newline at end of file diff --git a/README.md b/README.md index 0c23bb6..47e531a 100644 --- a/README.md +++ b/README.md @@ -40,3 +40,42 @@ npm run build You can preview the production build with `npm run preview`. > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. + +## Containerization +Login to repo +``` +docker login gitea.fennert.org +docker login --tls-verify=false mini-server:8300 +``` + +Build production image +``` +docker build \ + -t homepage:latest \ + -t gitea.fennert.org/adrian/homepage:latest \ # Replace with your image name + -t mini-server:8300/adrian/homepage:latest \ # use host in network, cloudflare proxy block after 100mb upload + -f Containerfile . +``` + +Push image +``` +docker push gitea.fennert.org/adrian/homepage:latest +docker push --tls-verify=false mini-server:8300/adrian/homepage:latest +``` + +Pull image +``` +docker pull gitea.fennert.org/adrian/homepage:latest +``` + +Run production image +``` +docker run -d \ + --name homepage \ + --network home \ + -p 3000:3000 \ + -e STRAPI_API_KEY="your_secret_key" \ # chnage me + -e PUBLIC_STRAPI_URL="https://strapi-homepage.fennert.org" \ + -e ORIGIN=https://fennert.org \ + gitea.fennert.org/adrian/homepage:latest +``` \ No newline at end of file