update for publishing and docker setup
Some checks failed
Docker CI / release (push) Has been cancelled
Some checks failed
Docker CI / release (push) Has been cancelled
This commit is contained in:
parent
4761f0c25c
commit
5502a26a6c
|
|
@ -1 +1,2 @@
|
|||
node_modules
|
||||
docs
|
||||
|
|
|
|||
2
.env.example
Normal file
2
.env.example
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
DATABASE_URL="file:/data/sqlite.db?connection_limit=1"
|
||||
SESSION_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
70
.forgejo/workflows/publish.yml
Normal file
70
.forgejo/workflows/publish.yml
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
name: Docker CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
env:
|
||||
node-version: 20.x
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
env:
|
||||
DOCKER_ORG: nzambello
|
||||
DOCKER_LATEST: nightly
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: |
|
||||
code.nzambello.dev/nzambello/explit
|
||||
labels: |
|
||||
org.label-schema.docker.cmd=docker run -d -p 8080:8080 code.nzambello.dev/nzambello/explit:latest
|
||||
flavor: latest=false
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=sha
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
|
||||
- name: Login to Container Registry
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: code.nzambello.dev
|
||||
username: ${{ gitea.repository_owner }}
|
||||
password: ${{ secrets.ACTIONS_TOKEN }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: ${{ gitea.event_name != 'pull_request' }}
|
||||
tags: |
|
||||
code.nzambello.dev/nzambello/explit:latest
|
||||
labels: $${{ steps.meta.outputs.labels }}
|
||||
|
||||
- name: Deploy
|
||||
uses: darnfish/watchtower-update@v3.2
|
||||
with:
|
||||
url: https://watchtower.nzambello.dev/v1/update
|
||||
api_token: "${{ secrets.WATCHTOWER_API_TOKEN }}"
|
||||
images: code.nzambello.dev/nzambello/explit
|
||||
25
.gitignore
vendored
25
.gitignore
vendored
|
|
@ -1,12 +1,33 @@
|
|||
node_modules
|
||||
.DS_Store
|
||||
|
||||
/.pnp
|
||||
.pnp.*
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
yarn-error.log
|
||||
|
||||
*.swp
|
||||
|
||||
/.cache
|
||||
/build
|
||||
/public/build
|
||||
|
||||
/prisma/dev.db
|
||||
/prisma/dev.db-journal
|
||||
/prisma/*.db
|
||||
/prisma/*.db-journal
|
||||
.env
|
||||
|
||||
/app/tailwind.css
|
||||
|
||||
.docker
|
||||
/.cache
|
||||
/build
|
||||
/public/build
|
||||
.env
|
||||
|
||||
*.db
|
||||
*.sqlite
|
||||
|
|
|
|||
17
Dockerfile
17
Dockerfile
|
|
@ -42,7 +42,10 @@ RUN npm run build
|
|||
# Finally, build the production image with minimal footprint
|
||||
FROM base
|
||||
|
||||
ENV NODE_ENV=production
|
||||
ENV DATABASE_URL=file:/data/sqlite.db
|
||||
ENV PORT="8080"
|
||||
ENV NODE_ENV="production"
|
||||
ENV SESSION_SECRET="${SESSION_SECRET:-za1W297qRgKq6PNtm5EXJlOfIto6WTS}"
|
||||
|
||||
RUN mkdir /app
|
||||
WORKDIR /app
|
||||
|
|
@ -51,6 +54,14 @@ COPY --from=production-deps /app/node_modules /app/node_modules
|
|||
COPY --from=build /app/node_modules/.prisma /app/node_modules/.prisma
|
||||
COPY --from=build /app/build /app/build
|
||||
COPY --from=build /app/public /app/public
|
||||
ADD . .
|
||||
COPY --from=build /app/package.json /app/package.json
|
||||
COPY --from=build /app/start.sh /app/start.sh
|
||||
COPY --from=build /app/prisma /app/prisma
|
||||
|
||||
CMD ["npm", "run", "start"]
|
||||
RUN npx prisma migrate deploy
|
||||
|
||||
RUN chmod +x start.sh
|
||||
|
||||
ENTRYPOINT [ "./start.sh" ]
|
||||
|
||||
EXPOSE 8080
|
||||
|
|
|
|||
19
start.sh
Normal file
19
start.sh
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
# This file is how Fly starts the server (configured in fly.toml). Before starting
|
||||
# the server though, we need to run any prisma migrations that haven't yet been
|
||||
# run, which is why this file exists in the first place.
|
||||
# Learn more: https://community.fly.io/t/sqlite-not-getting-setup-properly/4386
|
||||
|
||||
# allocate swap space
|
||||
# fallocate -l 512M /swapfile
|
||||
# chmod 0600 /swapfile
|
||||
# mkswap /swapfile
|
||||
# echo 10 > /proc/sys/vm/swappiness
|
||||
# swapon /swapfile
|
||||
# echo 1 > /proc/sys/vm/overcommit_memory
|
||||
|
||||
npx prisma migrate deploy
|
||||
yarn start
|
||||
Loading…
Reference in a new issue