Browse Source

containerize

Pi 4 months ago
parent
commit
bb655a7bf5
9 changed files with 105 additions and 10 deletions
  1. 26 0
      Dockerfile
  2. 1 0
      Readme.md
  3. 4 4
      create-pljava-jsword.sql
  4. 0 4
      create-pljava-schema.sql
  5. 43 0
      docker-compose.yml
  6. 10 0
      import-data.sql
  7. 20 0
      run.sh
  8. 1 1
      test-pljava-jsword.sh
  9. 0 1
      z_kingdom.csv

+ 26 - 0
Dockerfile

@@ -0,0 +1,26 @@
+FROM docker.io/library/postgres:15-bookworm
+
+ARG DEBIAN_CODENAME=trixie
+
+RUN apt-get update && \
+    apt-get -y install \
+      openjdk-17-jdk-headless \
+      sword-text-kjv \
+    && \
+    rm -rf /var/lib/apt/lists/* && \
+    :
+
+COPY pljava-jsword /pljava-jsword
+COPY *.sql /
+COPY *.csv /
+COPY .sword /var/lib/postgresql/.sword
+
+RUN java -jar /pljava-jsword/pljava-pg15.jar && \
+    chown -R postgres:postgres /var/lib/postgresql/.sword && \
+    chmod 0755 /var/lib/postgresql/.sword && \
+    chmod -R 0644 /var/lib/postgresql/.sword/mods.d/ && \
+    chmod 0755 /var/lib/postgresql/.sword/mods.d && \
+    mv /etc/postgresql-common/pljava.policy /etc/postgresql-common/pljava.policy.bak && \
+    :
+
+COPY pljava.policy /etc/postgresql-common/pljava.policy

+ 1 - 0
Readme.md

@@ -28,6 +28,7 @@ chown postgres:postgres /var/lib/postgresql/.sword
 chmod 0755 /var/lib/postgresql/.sword
 cp ~/.sword/mods.d/* /var/lib/postgresql/.sword/mods.d
 chown -R postgres:postgres /var/lib/postgresql/.sword/mods.d
+chmod 0755 /var/lib/postgresql/.sword/mods.d
 chmod -R 0644 /var/lib/postgresql/.sword/mods.d
 ```
 

+ 4 - 4
create-pljava-jsword.sql

@@ -3,9 +3,9 @@ SELECT sqlj.remove_jar ('pljava_jsword', 'false');
 SELECT sqlj.remove_jar ('jsword', 'true');
 SELECT sqlj.remove_jar ('jdom2', 'true');
 SELECT sqlj.remove_jar ('slf4j_logger', 'true');
-SELECT * FROM sqlj.install_jar('file:///home/pi/bin/slf4j-api-1.7.36.jar', 'slf4j_logger', 'false');
-SELECT * FROM sqlj.install_jar('file:///home/pi/bin/jdom2-2.0.6.1.jar', 'jdom2', 'false');
-SELECT * FROM sqlj.install_jar('file:///home/pi/bin/jsword-2.1-SNAPSHOT.jar', 'jsword', 'false');
+SELECT * FROM sqlj.install_jar('file:///pljava-jsword/slf4j-api-1.7.36.jar', 'slf4j_logger', 'false');
+SELECT * FROM sqlj.install_jar('file:///pljava-jsword/jdom2-2.0.6.1.jar', 'jdom2', 'false');
+SELECT * FROM sqlj.install_jar('file:///pljava-jsword/jsword-2.1-SNAPSHOT.jar', 'jsword', 'false');
 SELECT sqlj.set_classpath('public', 'slf4j_logger:jsword:jdom2');
-SELECT * FROM sqlj.install_jar('file:///home/pi/bin/pljava-jsword-0.1.3-SNAPSHOT.jar', 'pljava_jsword', 'true');
+SELECT * FROM sqlj.install_jar('file:///pljava-jsword/pljava-jsword-0.1.3-SNAPSHOT.jar', 'pljava_jsword', 'true');
 SELECT sqlj.set_classpath('public', 'slf4j_logger:jsword:jdom2:pljava_jsword');

+ 0 - 4
create-pljava-schema.sql

@@ -21,7 +21,3 @@ CREATE EXTENSION IF NOT EXISTS pljava WITH SCHEMA sqlj;
 COMMENT ON EXTENSION pljava IS 'PL/Java procedural language (https://tada.github.io/pljava/)';
 
 GRANT USAGE ON LANGUAGE java TO pgdb;
-
-ALTER DATABASE pgdb SET pljava.libjvm_location TO '/usr/lib/jvm/java-11-openjdk-arm64/lib/server/libjvm.so';
-
-

+ 43 - 0
docker-compose.yml

@@ -0,0 +1,43 @@
+services:
+  web:
+    image: pyapi
+    hostname: pg-web
+    restart: unless-stopped
+    build:
+      context: .
+      dockerfile: rest/Dockerfile
+    environment:
+      HOST: pg-db
+      USER: pgdb
+      PASSWORD: ${PGDB_PASSWORD}
+    ports:
+      - 192.168.0.20:11888:11888
+    expose:
+      - 11888
+    networks:
+      - priv
+
+  db:
+    hostname: pg-db
+    restart: unless-stopped
+    build:
+      context: .
+      dockerfile: Dockerfile
+    environment:
+      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+      TZ: Pacific/Auckland
+      PGTZ: Pacific/Auckland
+    expose:
+      - 5432
+    shm_size: 128mb
+    volumes:
+      - ./data:/var/lib/postgresql/data
+    networks:
+      - priv
+
+networks:
+  priv:
+    enable_ipv6: true
+    ipam:
+      config:
+       - subnet: fd00:0002::/64

+ 10 - 0
import-data.sql

@@ -8,3 +8,13 @@
 \copy c_debtors(translation,reference) FROM './debtors.csv' DELIMITER ',' CSV HEADER;
 \copy c_glory(reference,translation) FROM './glory.csv' DELIMITER '	' CSV HEADER;
 \copy c_tempt(translation,reference) FROM './tempt.csv' DELIMITER ',' CSV HEADER;
+ANALYZE c_a_kingdom;
+ANALYZE c_z_kingdom;
+ANALYZE c_bread;
+ANALYZE c_deliver;
+ANALYZE c_name;
+ANALYZE c_will;
+ANALYZE c_because;
+ANALYZE c_debtors;
+ANALYZE c_glory;
+ANALYZE c_tempt;

+ 20 - 0
run.sh

@@ -0,0 +1,20 @@
+podman-compose -p pg up -d
+podman exec -i pg_db_1 psql -U postgres -b < <( cat <<EOF
+--CREATE DATABASE grocery;
+--DROP DATABASE grocery;
+CREATE ROLE pgdb;
+ALTER ROLE pgdb LOGIN;
+CREATE DATABASE pgdb;
+ALTER DATABASE pgdb OWNER TO pgdb;
+ALTER DATABASE pgdb SET pljava.libjvm_location TO '/usr/lib/jvm/java-17-openjdk-arm64/lib/server/libjvm.so';
+EOF
+)
+podman exec -i pg_db_1 psql -U postgres -b /init-privileged.sql
+
+# sudo su
+mkdir -p /var/lib/postgresql/.sword/mods.d
+chown postgres:postgres /var/lib/postgresql/.sword
+chmod 0755 /var/lib/postgresql/.sword
+cp ~/.sword/mods.d/* /var/lib/postgresql/.sword/mods.d
+chown -R postgres:postgres /var/lib/postgresql/.sword/mods.d
+chmod -R 0644 /var/lib/postgresql/.sword/mods.d

+ 1 - 1
test-pljava-jsword.sh

@@ -1,5 +1,5 @@
 #!/bin/bash
-output=$(psql -d pgdb -1 -t -A <<EOF
+output=$(podman exec -i pg_db_1 psql -U pgdb -d pgdb -1 -t -A <<EOF
 SELECT * FROM getText('KJV', 'Gen 1:1');
 EOF
 )

+ 0 - 1
z_kingdom.csv

@@ -678,7 +678,6 @@ Lk 15:13,KJV
 Lk 15:18,KJV
 Ezek 18:24-25,KJV
 1 Jn 2:4,KJV
-1 Jn 1:10,KJV
 Ja 4:13-17,KJV
 2 Pe 3:3,KJV
 Mt 16:4,KJV