Improving docker setup & terraform init.
This commit is contained in:
5
Makefile
5
Makefile
@@ -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
|
||||
|
||||
@@ -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
11
src/Makefile
Normal 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
|
||||
@@ -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
|
||||
|
||||
19
src/db.scm
19
src/db.scm
@@ -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)))
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
(load "db.scm")
|
||||
(load "mocks.scm")
|
||||
;; (load "db")
|
||||
;; (load "mocks")
|
||||
(include "db")
|
||||
(include "mocks")
|
||||
|
||||
(import (chicken string)
|
||||
(chicken port)
|
||||
|
||||
13
src/run.scm
13
src/run.scm
@@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user