Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
0c0d4d9
change dockerfile structure
chreman May 6, 2021
90675cb
wip
chreman May 6, 2021
5e719d8
config locations and routing changes
chreman May 7, 2021
93ebedc
move CMD for api container to compose
chreman May 10, 2021
55bb05f
move redis_config to .env
chreman May 10, 2021
241a3ad
remove docker-compose.yml for windows; change postgresql container
chreman May 11, 2021
2c133a2
move persistence config to env
chreman May 13, 2021
f286830
port cleanup
chreman May 13, 2021
ab9d127
add missing redis configs to envs
chreman May 13, 2021
d47a0d6
add script to build docker images
chreman May 14, 2021
41b4466
add healthcheck endpoint to triple
chreman May 14, 2021
16347a3
add flavor configs
chreman May 14, 2021
b35449c
added nginx as proxy; separate volumes per flavor
chreman May 14, 2021
053621d
clean up exposed ports
chreman May 14, 2021
fb916a1
clean param
chreman May 19, 2021
4e6c9cc
clean up params
chreman May 19, 2021
5ec2c77
split off persistence api
chreman May 19, 2021
1552bfa
move last config json to env
chreman May 19, 2021
ff497de
clean up PHP files; add API flavor as config
chreman May 20, 2021
1d75bff
finish spinning off persistence API
chreman May 20, 2021
0d614f7
add example env
chreman May 20, 2021
d9dfd80
add persistence image
chreman May 20, 2021
91c7fe4
add flavor to example config
chreman May 21, 2021
e02d716
add service_version route
chreman May 21, 2021
a11bac1
add service_version endpoint to persistence
chreman May 21, 2021
d47034c
add new dataprocessing rate limit error
chreman May 25, 2021
59a5a27
add rate limit to modern backend
chreman May 26, 2021
a16f99e
finish new persistence routing
chreman May 26, 2021
2c766ed
update documentation
chreman May 28, 2021
ea7fafa
introduce lightweight API client
chreman May 28, 2021
2e39a4f
cleanup
chreman May 31, 2021
dfbace0
cleanup
chreman May 31, 2021
7d173ae
bugfix
chreman May 31, 2021
5f4fdae
cleanup
chreman May 31, 2021
d83e4d7
bugfix
chreman May 31, 2021
6300d4a
cleanup
chreman May 31, 2021
1f3d1dd
bugfix
chreman May 31, 2021
c607506
bugfix
chreman May 31, 2021
063a97e
add persistence forwarder
chreman May 31, 2021
1c8c118
bugfix
chreman May 31, 2021
f66099d
wip
chreman Jun 6, 2021
dbb5794
fix routing
chreman Jun 6, 2021
1fee61a
fix persistence redirect
chreman Jun 6, 2021
a5429ec
fix persistence redirect
chreman Jun 6, 2021
5ab37b5
fix redirect
chreman Jun 6, 2021
18eebe0
fix persistence routing
chreman Jun 6, 2021
8232790
fix persistence routing
chreman Jun 6, 2021
e22782c
fix postgres routing
chreman Jun 6, 2021
50fec0f
fix routing in APIClient
chreman Jun 6, 2021
eb5586b
fix routing
chreman Jun 7, 2021
465384d
fix APIclient initiation
chreman Jun 7, 2021
9babf3e
fix integration
chreman Jun 9, 2021
08d7e2a
env update
chreman Jun 9, 2021
ec172e1
bugfix
chreman Jun 9, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,4 @@ coverage/
/lc_browseview_cache.json
/lc_cache.json
/linkedcat.sqlite
.env
166 changes: 112 additions & 54 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,126 +2,184 @@ version: '3.7'

services:

pgsql:
db:
image: 'postgres:12.2-alpine'
hostname: "${POSTGRES_HOSTNAME}"
restart: always
environment:
POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
command: postgres -c config_file=/etc/postgresql.conf -c hba_file=/etc/pg_hba.conf
volumes:
- db-data:/var/lib/postgresql/data
- ./server/workers/pg_hba.conf:/var/lib/postgresql/data/pg_hba.conf
- ./server/workers/postgresql.conf:/var/lib/postgresql/data/postgresql.conf
ports:
- '127.0.0.1:5432:5432'
# - ~/data/OKMaps/${COMPOSE_PROJECT_NAME}/postgresql/data:/var/lib/postgresql/data
- db_data:/var/lib/postgresql/data
- ./server/workers/pg_hba.conf:/etc/pg_hba.conf
- ./server/workers/postgresql.conf:/etc/postgresql.conf
networks:
- headstart

pgadmin:
image: 'dpage/pgadmin4'
ports:
- '127.0.0.1:54323:80'
env_file:
- .env

api:
build:
context: server
dockerfile: services.docker
restart: always
depends_on:
- redis
network_mode: "host"
depends_on:
- redis
networks:
- headstart

redis:
image: 'redis:4.0-alpine'
restart: always
command: ["redis-server", "/etc/redis/redis.conf", "--appendonly", "yes"]
hostname: "${REDIS_HOST}"
environment:
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
command: ["redis-server", "/etc/redis/redis.conf", "--bind", "${REDIS_HOST}", "--appendonly", "yes", "--port", "${REDIS_PORT}"]
volumes:
- 'redis:/var/lib/redis/data'
- ./server/workers/redis.conf:/etc/redis/redis.conf
- 'redis:/var/lib/redis/data'
- ./server/workers/redis.conf:/etc/redis/redis.conf
restart: always
networks:
- headstart

api:
image: api:${SERVICE_VERSION}
restart: always
network_mode: "host"
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
REDIS_DB: "${REDIS_DB}"
command: ["gunicorn", "--workers", "10", "--threads", "2", "-b", "0.0.0.0:${API_PORT}", "app:app", "--timeout", "300"]
depends_on:
- redis
networks:
- headstart

search_triple:
build:
context: server
dockerfile: search_triple.docker
persistence:
image: persistence:${SERVICE_VERSION}
restart: always
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
POSTGRES_HOST: "${POSTGRES_HOST}"
POSTGRES_PORT: "${POSTGRES_PORT}"
command: ["gunicorn", "--workers", "10", "--threads", "2", "-b", "0.0.0.0:${API_PORT}", "app:app", "--timeout", "300"]
networks:
- headstart

triple:
image: triple:${SERVICE_VERSION}
env_file:
- server/workers/triple/triple.env
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_DB: "${REDIS_DB}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
restart: always
network_mode: "host"
depends_on:
- redis
networks:
- headstart

search_gsheets:
build:
context: server
dockerfile: search_gsheets.docker
gsheets:
image: gsheets:${SERVICE_VERSION}
env_file:
- server/workers/gsheets/gsheets.env
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_DB: "${REDIS_DB}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
restart: always
network_mode: "host"
depends_on:
- redis
networks:
- headstart

dataprocessing:
build:
context: server
dockerfile: dataprocessing.docker
image: dataprocessing:${SERVICE_VERSION}
env_file:
- server/workers/dataprocessing/dataprocessing.env
- server/workers/dataprocessing/dataprocessing.env
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_DB: "${REDIS_DB}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
restart: always
network_mode: "host"
volumes:
- /opt/local/renv/cache:/renv/cache
- /var/log/headstart:/var/log/headstart
depends_on:
- redis
networks:
- headstart

search_base:
build:
context: server
dockerfile: base.docker
base:
image: base:${SERVICE_VERSION}
env_file:
- server/workers/base/base.env
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_DB: "${REDIS_DB}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
restart: always
network_mode: "host"
volumes:
- /opt/local/renv/cache:/renv/cache
- /var/log/headstart:/var/log/headstart
depends_on:
- redis
networks:
- headstart

search_pubmed:
build:
context: server
dockerfile: pubmed.docker
pubmed:
image: pubmed:${SERVICE_VERSION}
env_file:
- server/workers/pubmed/pubmed.env
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_DB: "${REDIS_DB}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
restart: always
network_mode: "host"
volumes:
- /opt/local/renv/cache:/renv/cache
- /var/log/headstart:/var/log/headstart
depends_on:
- redis
networks:
- headstart

search_openaire:
build:
context: server
dockerfile: openaire.docker
openaire:
image: openaire:${SERVICE_VERSION}
env_file:
- server/workers/openaire/openaire.env
environment:
SERVICE_VERSION: "${SERVICE_VERSION}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_DB: "${REDIS_DB}"
REDIS_PASSWORD: "${REDIS_PASSWORD}"
restart: always
network_mode: "host"
volumes:
- /opt/local/renv/cache:/renv/cache
- /var/log/headstart:/var/log/headstart
depends_on:
- redis
networks:
- headstart

volumes:
redis:
db-data:
db_data:
driver: local

networks:
headstart:
42 changes: 0 additions & 42 deletions docker-compose_win.yml

This file was deleted.

6 changes: 0 additions & 6 deletions example.env

This file was deleted.

49 changes: 49 additions & 0 deletions server/classes/headstart/library/APIClient.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

namespace headstart\library;
require_once dirname(__FILE__) . '/CommUtils.php';

class APIClient {

public function __construct($ini_array) {

$this->load_configs($ini_array);
}

public function load_configs($ini_array) {
$this->ini_array = $ini_array;
$this->settings = $this->ini_array["general"];
$this->processing_backend = isset($this->ini_array["general"]["processing_backend"])
? ($this->ini_array["general"]["processing_backend"])
: "legacy";
$this->persistence_backend = isset($this->ini_array["general"]["persistence_backend"])
? ($this->ini_array["general"]["persistence_backend"])
: "legacy";
$this->database = $this->ini_array["connection"]["database"];
$this->WORKING_DIR = $this->ini_array["general"]["preprocessing_dir"] . $this->ini_array["output"]["output_dir"];
$api_url = $this->ini_array["general"]["api_url"];
$api_flavor = isset($this->ini_array["general"]["api_flavor"])
? ($this->ini_array["general"]["api_flavor"])
: "stable";
$this->base_route = $api_url . $api_flavor . "/";
}

public function call_api($endpoint, $payload) {
$route = $this->base_route . $endpoint;
$res = CommUtils::call_api($route, $payload);
if ($res["httpcode"] != 200) {
$res["route"] = $route;
}
return $res;
}

public function call_persistence($endpoint, $payload) {
$route = $this->base_route . "persistence/" . $endpoint . "/" . $this->database;
$res = CommUtils::call_api($route, $payload);
if ($res["httpcode"] != 200) {
$res["route"] = $route;
}
return $res;
}

}
Loading