diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..c0706cd --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,39 @@ +stages: + - build + - deploy + +variables: + IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA + IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest + +build: + stage: build + image: docker:latest + services: + - docker:dind + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker build -t $IMAGE_TAG -t $IMAGE_LATEST . + - docker push $IMAGE_TAG + - docker push $IMAGE_LATEST + +deploy: + stage: deploy + image: docker:latest + services: + - docker:dind + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker pull $IMAGE_LATEST + - docker stop litenote-jetstream || true + - docker rm litenote-jetstream || true + - > + docker run -d + --name litenote-jetstream + --restart unless-stopped + -v litenote-data:/data + $IMAGE_LATEST + only: + - main diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ca9b281 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM denoland/deno:2 + +WORKDIR /app + +COPY deno.json deno.lock ./ +RUN deno install + +COPY . . +RUN deno cache main.ts + +RUN mkdir -p /data +VOLUME /data +ENV SQLITE_PATH=/data/notes.db + +CMD ["deno", "run", "--allow-net", "--allow-read", "--allow-write", "--allow-env", "main.ts"] diff --git a/src/data/db.ts b/src/data/db.ts index 5acc236..c1edd24 100644 --- a/src/data/db.ts +++ b/src/data/db.ts @@ -1,7 +1,7 @@ import { DB } from "https://deno.land/x/sqlite/mod.ts"; import type { Note } from "./note" -export const db = new DB("notes.db"); +export const db = new DB(Deno.env.get("SQLITE_PATH") ?? "notes.db"); export const upsertNote = async (note: Note) => { db.query(