Improving docker setup & terraform init.

This commit is contained in:
2026-02-21 08:39:32 -08:00
parent b93933f4e9
commit 9d5b8b9f6c
7 changed files with 73 additions and 13 deletions

View File

@@ -75,6 +75,7 @@ generated.tfvars: $(apps_config) make-generated.sh
./make-generated.sh $(apps_config) > generated.tfvars
plan: ignition.json $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars
terraform init
bash -c "terraform plan -var-file=<(cat $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars)"
.PHONY: announce-start
@@ -83,9 +84,11 @@ announce-start:
apply: announce-start ignition.json $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars
echo "NASSELLA_CONFIG: end"
terraform init
bash -c "terraform apply -auto-approve -input=false -var-file=<(cat $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars)"
destroy: ignition.json $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars
terraform init
bash -c "terraform destroy -auto-approve -input=false -var-file=<(cat $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars)"
.PHONY: restic-init
@@ -101,7 +104,7 @@ restic-snapshots: $(apps_config) restic-password
archive:
tar -cf nassella-latest.tar all-apps cl.yaml init-restic.sh main.tf make-caddyfile.sh Makefile \
make-generated.sh make-nextcloud-env.sh make-ghost-env.sh make-restic-generated.sh make-restic-password.sh restic-snapshots.sh copy-apps.sh \
.terraform .terraform.lock.hcl
.terraform.lock.hcl
cp nassella-latest.tar src/
## to help me remember the command to run to test the config locally

View File

@@ -12,7 +12,7 @@ WORKDIR /build/chicken
RUN make
RUN make install
FROM debian:trixie-slim
FROM debian:trixie-slim AS buildeggs
RUN apt-get update && apt-get -y --no-install-recommends install \
gcc libc-dev libpq-dev \
&& rm -rf /var/lib/apt/lists/*
@@ -43,12 +43,30 @@ COPY mocks.scm mocks.scm
COPY db.scm db.scm
COPY nassella.scm nassella.scm
COPY run.scm run.scm
COPY docker-ssh-keygen.sh docker-ssh-keygen.sh
RUN csc -O3 mocks.scm -J
RUN csc -O3 db.scm -J
RUN csc -O3 nassella.scm -J
RUN csc -O3 -o nassella-run run.scm
RUN chmod +x nassella-run
FROM debian:trixie-slim
RUN apt-get update && apt-get -y --no-install-recommends install \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
COPY --from=buildeggs /usr/local/ /usr/local/
WORKDIR /var
COPY --from=buildeggs /var/nassella/mocks /var
COPY --from=buildeggs /var/nassella/db /var
COPY --from=buildeggs /var/nassella/nassella /var
COPY --from=buildeggs /var/nassella/nassella-run /var
COPY nassella-latest.tar nassella-latest.tar
COPY root-key root-key
COPY db-init.sql db-init.sql
RUN csc -O3 run.scm
RUN chmod +x run
ENTRYPOINT ["./run"]
# ENTRYPOINT ["ls"]
# CMD ["/usr/local/lib/chicken/11"]
ENTRYPOINT ["./nassella-run"]
CMD ["-:a50"]

11
src/Makefile Normal file
View File

@@ -0,0 +1,11 @@
dockerall:
docker buildx build --platform linux/amd64,linux/arm64 -t nassella/b0.0.1 .
dockerlocal:
docker buildx build -t nassella/b0.0.1 .
dockerpush:
docker push nassella/b0.0.1
local:
docker run -p 8080:8080 --net=host --rm nassella/b0.0.1

View File

@@ -6,6 +6,8 @@ services:
POSTGRES_USER: nassella
POSTGRES_PASSWORD: password
POSTGRES_DB: nassella
volumes:
- /home/tjhintz/nassella-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready", "-U", "nassella"]
interval: 1s

View File

@@ -3,7 +3,7 @@
connection-spec
;;functions
with-db with-db/transaction
with-db with-db/transaction db-init
create-user delete-user
create-instance get-user-instances
@@ -30,13 +30,15 @@
(chicken file)
(chicken string)
(chicken port)
(chicken io)
postgresql
sql-null
srfi-1
srfi-13
(openssl cipher)
(openssl random)
crypto-tools)
crypto-tools
spiffy)
(define connection-spec (make-parameter '((dbname . "nassella") (user . "nassella") (password . "password") (host . "127.0.0.1"))))
(define db-connection (make-parameter #f))
@@ -525,6 +527,19 @@ returning users.user_id;"
""
(user-decrypt-from-db (alist-ref 'state_backup_enc res) user-key user-iv user-id)))))))
(define (db-init)
(with-db/transaction
(lambda (db)
(if (value-at (query db "SELECT EXISTS (SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'users');"))
#t
(begin
(log-to (debug-log) "tables not found in db. Creating...")
(for-each
(lambda (statement)
(query db (conc statement ";")))
(string-split (with-input-from-file "db-init.sql" read-string) ";"))
(log-to (debug-log) "table completion complete"))))))
;; (with-db/transaction (lambda (db) (get-user-deployments db 1)))
;; (with-db/transaction (lambda (db) (get-most-recent-deployment-progress db 7)))
;; (with-db/transaction (lambda (db) (get-deployment-progress db 14)))

View File

@@ -1,5 +1,7 @@
(load "db.scm")
(load "mocks.scm")
;; (load "db")
;; (load "mocks")
(include "db")
(include "mocks")
(import (chicken string)
(chicken port)

View File

@@ -1,4 +1,13 @@
(load "nassella.scm")
(include "nassella")
(import spiffy schematra)
(with-schematra-app app (lambda () (start-server)))
(debug-log (current-error-port))
(with-schematra-app
app
(lambda ()
(log-to (debug-log) "starting server")
(log-to (debug-log) "initializing db")
(db-init)
(log-to (debug-log) "db initialization complete")
(start-server)))