diff options
author | Arun Isaac | 2022-09-02 17:28:52 +0530 |
---|---|---|
committer | Arun Isaac | 2022-09-02 17:28:52 +0530 |
commit | 2a22204665065517ed1d14ec2fc12f25378f795b (patch) | |
tree | be7d767381541194f70f4e2e3c6c7fe333f61b20 /containers | |
parent | 22e2e4887eea8b4ade6da7c72d46f91d74d643e5 (diff) | |
download | genenetwork2-2a22204665065517ed1d14ec2fc12f25378f795b.tar.gz |
Add database container.
* containers/db-container.scm, containers/db-container.sh: New files.
Diffstat (limited to 'containers')
-rw-r--r-- | containers/db-container.scm | 38 | ||||
-rwxr-xr-x | containers/db-container.sh | 12 |
2 files changed, 50 insertions, 0 deletions
diff --git a/containers/db-container.scm b/containers/db-container.scm new file mode 100644 index 00000000..848b6a2e --- /dev/null +++ b/containers/db-container.scm @@ -0,0 +1,38 @@ +;;; This file describes a Guix system container to run the database +;;; services required by genenetwork2 locally on your own +;;; machine. This is to allow a purely offline development setup for +;;; hacking on genenetwork2. To build and run the container, use +;;; db-container.sh. + +(use-modules (gnu) + (gnu packages databases) + (gnu services databases)) + +(define %mariadb-state-directory + "/var/lib/mysql") + +(define set-permissions-gexp + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + ;; Set ownership of mariadb state directory. + (let ((user (getpw "mysql"))) + (for-each (lambda (file) + (chown file (passwd:uid user) (passwd:gid user))) + (find-files #$%mariadb-state-directory #:directories? #t)))))) + +(operating-system + (host-name "genenetwork2") + (timezone "Etc/UTC") + (locale "en_US.utf8") + (bootloader (bootloader-configuration + (bootloader grub-bootloader) + (targets (list "does-not-matter")))) + (file-systems %base-file-systems) + (services (cons* (service mysql-service-type) + (service redis-service-type) + (simple-service 'set-permissions + activation-service-type + set-permissions-gexp) + %base-services))) diff --git a/containers/db-container.sh b/containers/db-container.sh new file mode 100755 index 00000000..bbe0247a --- /dev/null +++ b/containers/db-container.sh @@ -0,0 +1,12 @@ +#! /bin/sh -e + +# Find path to containers directory. +containers=$(dirname $0) + +# Create mariadb state directory if it does not exist. +mkdir -p $containers/mariadb-state + +# Build the container. +guix system container --network \ + --share=$containers/mariadb-state=/var/lib/mysql \ + $containers/db-container.scm |