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
|
./make-generated.sh $(apps_config) > generated.tfvars
|
||||||
|
|
||||||
plan: ignition.json $(config_dir)$(TERRAFORM_ENV).tfvars 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)"
|
bash -c "terraform plan -var-file=<(cat $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars)"
|
||||||
|
|
||||||
.PHONY: announce-start
|
.PHONY: announce-start
|
||||||
@@ -83,9 +84,11 @@ announce-start:
|
|||||||
|
|
||||||
apply: announce-start ignition.json $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars
|
apply: announce-start ignition.json $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars
|
||||||
echo "NASSELLA_CONFIG: end"
|
echo "NASSELLA_CONFIG: end"
|
||||||
|
terraform init
|
||||||
bash -c "terraform apply -auto-approve -input=false -var-file=<(cat $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars)"
|
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
|
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)"
|
bash -c "terraform destroy -auto-approve -input=false -var-file=<(cat $(config_dir)$(TERRAFORM_ENV).tfvars generated.tfvars)"
|
||||||
|
|
||||||
.PHONY: restic-init
|
.PHONY: restic-init
|
||||||
@@ -101,7 +104,7 @@ restic-snapshots: $(apps_config) restic-password
|
|||||||
archive:
|
archive:
|
||||||
tar -cf nassella-latest.tar all-apps cl.yaml init-restic.sh main.tf make-caddyfile.sh Makefile \
|
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 \
|
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/
|
cp nassella-latest.tar src/
|
||||||
|
|
||||||
## to help me remember the command to run to test the config locally
|
## to help me remember the command to run to test the config locally
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ WORKDIR /build/chicken
|
|||||||
RUN make
|
RUN make
|
||||||
RUN make install
|
RUN make install
|
||||||
|
|
||||||
FROM debian:trixie-slim
|
FROM debian:trixie-slim AS buildeggs
|
||||||
RUN apt-get update && apt-get -y --no-install-recommends install \
|
RUN apt-get update && apt-get -y --no-install-recommends install \
|
||||||
gcc libc-dev libpq-dev \
|
gcc libc-dev libpq-dev \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
@@ -43,12 +43,30 @@ COPY mocks.scm mocks.scm
|
|||||||
COPY db.scm db.scm
|
COPY db.scm db.scm
|
||||||
COPY nassella.scm nassella.scm
|
COPY nassella.scm nassella.scm
|
||||||
COPY run.scm run.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 nassella-latest.tar nassella-latest.tar
|
||||||
COPY root-key root-key
|
COPY root-key root-key
|
||||||
|
COPY db-init.sql db-init.sql
|
||||||
|
|
||||||
RUN csc -O3 run.scm
|
# ENTRYPOINT ["ls"]
|
||||||
RUN chmod +x run
|
# CMD ["/usr/local/lib/chicken/11"]
|
||||||
|
ENTRYPOINT ["./nassella-run"]
|
||||||
ENTRYPOINT ["./run"]
|
|
||||||
CMD ["-:a50"]
|
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_USER: nassella
|
||||||
POSTGRES_PASSWORD: password
|
POSTGRES_PASSWORD: password
|
||||||
POSTGRES_DB: nassella
|
POSTGRES_DB: nassella
|
||||||
|
volumes:
|
||||||
|
- /home/tjhintz/nassella-db:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready", "-U", "nassella"]
|
test: ["CMD-SHELL", "pg_isready", "-U", "nassella"]
|
||||||
interval: 1s
|
interval: 1s
|
||||||
|
|||||||
19
src/db.scm
19
src/db.scm
@@ -3,7 +3,7 @@
|
|||||||
connection-spec
|
connection-spec
|
||||||
|
|
||||||
;;functions
|
;;functions
|
||||||
with-db with-db/transaction
|
with-db with-db/transaction db-init
|
||||||
|
|
||||||
create-user delete-user
|
create-user delete-user
|
||||||
create-instance get-user-instances
|
create-instance get-user-instances
|
||||||
@@ -30,13 +30,15 @@
|
|||||||
(chicken file)
|
(chicken file)
|
||||||
(chicken string)
|
(chicken string)
|
||||||
(chicken port)
|
(chicken port)
|
||||||
|
(chicken io)
|
||||||
postgresql
|
postgresql
|
||||||
sql-null
|
sql-null
|
||||||
srfi-1
|
srfi-1
|
||||||
srfi-13
|
srfi-13
|
||||||
(openssl cipher)
|
(openssl cipher)
|
||||||
(openssl random)
|
(openssl random)
|
||||||
crypto-tools)
|
crypto-tools
|
||||||
|
spiffy)
|
||||||
|
|
||||||
(define connection-spec (make-parameter '((dbname . "nassella") (user . "nassella") (password . "password") (host . "127.0.0.1"))))
|
(define connection-spec (make-parameter '((dbname . "nassella") (user . "nassella") (password . "password") (host . "127.0.0.1"))))
|
||||||
(define db-connection (make-parameter #f))
|
(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)))))))
|
(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-user-deployments db 1)))
|
||||||
;; (with-db/transaction (lambda (db) (get-most-recent-deployment-progress db 7)))
|
;; (with-db/transaction (lambda (db) (get-most-recent-deployment-progress db 7)))
|
||||||
;; (with-db/transaction (lambda (db) (get-deployment-progress db 14)))
|
;; (with-db/transaction (lambda (db) (get-deployment-progress db 14)))
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
(load "db.scm")
|
;; (load "db")
|
||||||
(load "mocks.scm")
|
;; (load "mocks")
|
||||||
|
(include "db")
|
||||||
|
(include "mocks")
|
||||||
|
|
||||||
(import (chicken string)
|
(import (chicken string)
|
||||||
(chicken port)
|
(chicken port)
|
||||||
|
|||||||
13
src/run.scm
13
src/run.scm
@@ -1,4 +1,13 @@
|
|||||||
(load "nassella.scm")
|
(include "nassella")
|
||||||
(import spiffy schematra)
|
(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