From d991dfdb0c7c58724c5e9286309f4568212587fc Mon Sep 17 00:00:00 2001 From: Blair Vanderlugt Date: Tue, 9 Feb 2021 07:26:02 -0800 Subject: [PATCH] docker compose and init scripts --- apps/cic-meta/docker/Dockerfile | 2 +- apps/cic-meta/scripts/initdb/postgresql.sh | 15 +++++ .../{server => initdb}/server.postgres.sql | 2 +- .../scripts/{server => initdb}/server.sql | 0 .../{server => initdb}/server.sqlite.sql | 0 docker-compose.yml | 65 ++++++++++--------- scripts/initdb/postgresql.sh | 15 +++++ 7 files changed, 68 insertions(+), 31 deletions(-) create mode 100644 apps/cic-meta/scripts/initdb/postgresql.sh rename apps/cic-meta/scripts/{server => initdb}/server.postgres.sql (81%) rename apps/cic-meta/scripts/{server => initdb}/server.sql (100%) rename apps/cic-meta/scripts/{server => initdb}/server.sqlite.sql (100%) create mode 100644 scripts/initdb/postgresql.sh diff --git a/apps/cic-meta/docker/Dockerfile b/apps/cic-meta/docker/Dockerfile index d44ff4bb..b4760861 100644 --- a/apps/cic-meta/docker/Dockerfile +++ b/apps/cic-meta/docker/Dockerfile @@ -16,7 +16,7 @@ COPY cic-meta/scripts/ scripts/ RUN alias tsc=node_modules/typescript/bin/tsc COPY cic-meta/.config/ /usr/local/etc/cic-meta/ -COPY cic-meta/scripts/server/server.postgres.sql /usr/local/share/cic-meta/sql/server.sql +COPY cic-meta/scripts/server/initdb/server.postgres.sql /usr/local/share/cic-meta/sql/server.sql COPY cic-meta/docker/db.sh ./db.sh RUN chmod 755 ./db.sh diff --git a/apps/cic-meta/scripts/initdb/postgresql.sh b/apps/cic-meta/scripts/initdb/postgresql.sh new file mode 100644 index 00000000..5e972aaf --- /dev/null +++ b/apps/cic-meta/scripts/initdb/postgresql.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname cic_meta <<-EOSQL + create table if not exists cic_meta.store ( + id serial primary key not null, + owner_fingerprint text not null, + hash char(64) not null unique, + content text not null + ); + + create index if not exists idx_fp on store ((lower(owner_fingerprint))); +EOSQL + + diff --git a/apps/cic-meta/scripts/server/server.postgres.sql b/apps/cic-meta/scripts/initdb/server.postgres.sql similarity index 81% rename from apps/cic-meta/scripts/server/server.postgres.sql rename to apps/cic-meta/scripts/initdb/server.postgres.sql index 93a2d13a..3eb032ba 100644 --- a/apps/cic-meta/scripts/server/server.postgres.sql +++ b/apps/cic-meta/scripts/initdb/server.postgres.sql @@ -1,4 +1,4 @@ -create table if not exists store ( +create table if not exists cic_meta.store ( id serial primary key not null, owner_fingerprint text not null, hash char(64) not null unique, diff --git a/apps/cic-meta/scripts/server/server.sql b/apps/cic-meta/scripts/initdb/server.sql similarity index 100% rename from apps/cic-meta/scripts/server/server.sql rename to apps/cic-meta/scripts/initdb/server.sql diff --git a/apps/cic-meta/scripts/server/server.sqlite.sql b/apps/cic-meta/scripts/initdb/server.sqlite.sql similarity index 100% rename from apps/cic-meta/scripts/server/server.sqlite.sql rename to apps/cic-meta/scripts/initdb/server.sqlite.sql diff --git a/docker-compose.yml b/docker-compose.yml index 89f6d929..94b9b7a8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,15 +44,17 @@ services: # See contents of /initdb/create_db.sql for app user, password and databases postgres: - image: postgres:12.5-alpine + image: postgres:10 environment: POSTGRES_HOST_AUTH_METHOD: trust # for postgres user access w/o password. Obvioulsy not safe but allows easy elevated debugging. - PGDATA: /tmp/cic/postgres + # PGDATA: /tmp/cic/postgres ports: - 5432 volumes: - - ./scripts/initdb/create_db.sql:/docker-entrypoint-initdb.d/1-create_all_db.sql # init db scripts will run in order at container start - - postgres-db:/tmp/cic/postgres + - ./scripts/initdb/create_db.sql:/docker-entrypoint-initdb.d/1-create_all_db.sql + # - ./apps/cic-meta/scripts/server/initdb/postgresql.sh:/docker-entrypoint-initdb.d/2-init-cic-meta.sh + - ./scripts/initdb/postgresql.sh:/docker-entrypoint-initdb.d/2-init-cic-meta.sh + - postgres-db:/var/lib/postgresql/data redis: image: redis:6.0.9-alpine @@ -394,31 +396,36 @@ services: command: "/root/start_tasker.sh -q cic-notify" -# cic-meta-server: -# image: grassrootseconomics:cic-meta-server -# environment: -# DATABASE_USER: $DATABASE_USER -# DATABASE_HOST: $DATABASE_HOST -# DATABASE_PORT: $DATABASE_PORT -# DATABASE_PASSWORD: $DATABASE_PASSWORD -# DATABASE_NAME: $DATABASE_NAME_CIC_META -# DATABASE_ENGINE: $DATABASE_ENGINE -# DATABASE_DRIVER: $DATABASE_DRIVER -# DATABASE_SCHEMA_SQL_PATH: $DATABASE_SCHEMA_SQL_PATH_CIC_META -# SERVER_PORT: 80 -# PGP_PASSPHRASE: $PGP_PASSPHRASE -# PGP_EXPORTS_DIR: $PGP_EXPORTS_DIR -# PGP_PRIVATEKEY_FILE: $PGP_PRIVATEKEY_FILE -# ports: -# - ${HTTP_PORT_CIC_META}:80 -# depends_on: -# - postgres -# deploy: -# restart_policy: -# condition: on-failure -# volumes: -# - ${LOCAL_VOLUME_DIR:-/tmp/cic}/pgp:/tmp/cic/pgp -# command: "/root/start_server.sh -vv" + cic-meta-server: + build: + context: apps/ + dockerfile: cic-meta/docker/Dockerfile + environment: + DATABASE_NAME: ${DATABASE_NAME:-cic_meta} + DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres} + DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2} + DATABASE_USER: ${DATABASE_USER:-grassroots} + DATABASE_HOST: ${DATABASE_HOST:-postgres} + DATABASE_PORT: ${DATABASE_PORT:-5432} + DATABASE_SCHEMA_SQL_PATH: "" + PGP_EXPORTS_DIR: /tmp/src/cic-meta/tests/ + PGP_PRIVATEKEY_FILE: privatekeys.asc + PGP_PASSPHRASE: merman + PGP_PUBLICKEY_TRUSTED_FILE: publickeys.asc + PGP_PUBLICKEY_ACTIVE_FILE: publickeys.asc + PGP_PUBLICKEY_ENCRYPT_FILE: publickeys.asc + SERVER_ADDRESS: 0.0.0.0 + SERVER_PORT: 7777 + ports: + - ${HTTP_PORT_CIC_META:-80} + depends_on: + - postgres + deploy: + restart_policy: + condition: on-failure + volumes: + - ${LOCAL_VOLUME_DIR:-/tmp/cic}/pgp:/tmp/cic/pgp + command: "/root/start_server.sh -vv" # cic-ussd-server: # # image: grassrootseconomics:cic-ussd diff --git a/scripts/initdb/postgresql.sh b/scripts/initdb/postgresql.sh new file mode 100644 index 00000000..5e972aaf --- /dev/null +++ b/scripts/initdb/postgresql.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname cic_meta <<-EOSQL + create table if not exists cic_meta.store ( + id serial primary key not null, + owner_fingerprint text not null, + hash char(64) not null unique, + content text not null + ); + + create index if not exists idx_fp on store ((lower(owner_fingerprint))); +EOSQL + +