NOT DONE YET - allow containerization

a bunch was restructured to make it amenable to docker.

it works fine, except when writing to the db. trying to log in (thus creating a session)
will have Lapis throw "attempt to write a readonly database"
This commit is contained in:
Lera Elvoé 2025-05-23 04:46:10 +03:00
parent af20b626d5
commit 0d7ed52679
Signed by: yagich
SSH Key Fingerprint: SHA256:6xjGb6uA7lAVcULa7byPEN//rQ0wPoG+UzYVMfZnbvc
7 changed files with 48 additions and 7 deletions

7
.dockerignore Normal file
View File

@ -0,0 +1,7 @@
logs/
nginx.conf.compiled
.vscode/
.local/
data/db/*
secrets
sass

6
.gitignore vendored
View File

@ -2,9 +2,7 @@ logs/
nginx.conf.compiled
.vscode/
.local/
data/db/*
secrets/secrets.lua
data/static/avatars/*
!data/static/avatars/default.webp
data/db/*
secrets.lua
.first_launch.*

20
Dockerfile Normal file
View File

@ -0,0 +1,20 @@
# HOW TO:
#
# docker build -t porom:latest .
#
# Then run the container:
#
# docker compose up
#
# NOTE: not working yet. i get an error that the db is read-only :(
#
FROM openresty/openresty:alpine-fat
RUN apk add --no-cache git make gcc g++ musl-dev libffi-dev openssl-dev sqlite-dev libsodium libsodium-dev imagemagick-dev openssl
WORKDIR /app
COPY . .
RUN eval "$(luarocks --lua-version=5.1 path)"
RUN luarocks --lua-version=5.1 build --only-deps
EXPOSE 8080
RUN chmod +x /app/start.sh
ENTRYPOINT ["/app/start.sh", "production"]

View File

@ -1,5 +1,5 @@
local config = require("lapis.config")
local secrets = require("secrets")
local secrets = require("secrets.secrets")
config({"development", "production"}, {
port = 8080,

10
docker-compose.yml Normal file
View File

@ -0,0 +1,10 @@
services:
porom:
build:
context: .
ports:
- "8080:8080"
volumes:
- ./data/static:/app/data/static
- ./data/db:/app/data/db
- ./secrets:/app/secrets

View File

@ -1,12 +1,18 @@
#!/bin/bash
set -e
start() {
lapis serve
}
first_launch() {
echo "Setting up for the first time"
touch ".first_launch.$LAPIS_ENVIRONMENT"
mkdir -p secrets
local SECRET
SECRET="$(openssl rand -hex 32)"
echo "return { key = \"${SECRET}\",}" > secrets/secrets.lua
touch "secrets/.touched.$LAPIS_ENVIRONMENT"
mkdir -p data/db
luajit schema.lua
lapis migrate
@ -22,7 +28,7 @@ fi
echo "Starting in $LAPIS_ENVIRONMENT"
if ! [ -f ".first_launch.$LAPIS_ENVIRONMENT" ]; then
if ! [ -f ".touched.$LAPIS_ENVIRONMENT" ]; then
first_launch
fi