diff --git a/Makefile b/Makefile index c2ad6efc9b84d2d0506452cf5784d86e783ce6de..fc078403586caacbb21d84f6208681756a86c0f0 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,22 @@ .PHONY: clean docs +TAG ?= latest + all: build clean: rm -rf ./site -docs: install-deps - python3 ./dockerhub/release.py +release: release-docs release-dockerhub -install-deps: - sudo pip3 install -r ./requirements.txt +release-docs: + docker compose build dbrepo-docs + docker tag dbrepo-docs:latest "dbrepo/docs:${TAG}" + docker push "dbrepo/docs:${TAG}" -release: install-deps +release-dockerhub: + sudo pip3 install -r ./requirements.txt + python3 ./dockerhub/release.py verify: sudo nginx -t diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..55a299509c9f5f4244502079de64602a3e3d49bd --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3.8" + +services: + + dbrepo-docs: + image: dbrepo-docs + restart: on-failure + build: ./swagger + container_name: dbrepo-docs + hostname: dbrepo-docs + ports: + - "80:80" \ No newline at end of file diff --git a/dockerhub/fda-docs.md b/dockerhub/fda-docs.md new file mode 100644 index 0000000000000000000000000000000000000000..262f431a6d8fed492ffaa61d69ac5f8a52ea3c56 --- /dev/null +++ b/dockerhub/fda-docs.md @@ -0,0 +1,9 @@ +# How to use this image + +```console +$ docker run -p 80:80 +``` + +## Customization + +No customization. \ No newline at end of file diff --git a/dockerhub/release.py b/dockerhub/release.py index 18a1e38d125348ce7ae5d5d95a5e149d199c783c..c17623b68d64d0081962195e98a30330e869ab70 100755 --- a/dockerhub/release.py +++ b/dockerhub/release.py @@ -6,6 +6,6 @@ dockerhub = Dockerhub() if __name__ == "__main__": for component in ["analyse-service", "authentication-service", "broker-service", "container-service", "database-service", "discovery-service", "gateway-service", "identifier-service", - "metadata-db", "query-service", "search-service", "table-service", "ui", "units-service"]: + "metadata-db", "query-service", "search-service", "table-service", "ui", "units-service", "docs"]: response = dockerhub.modify_description(component) print(response) diff --git a/nginx/nginx.conf b/nginx/nginx.conf deleted file mode 100644 index 02aef5ec8c9b71b012b71458fa4e3c1253deb203..0000000000000000000000000000000000000000 --- a/nginx/nginx.conf +++ /dev/null @@ -1,78 +0,0 @@ -# For more information on configuration, see: -# * Official English Documentation: http://nginx.org/en/docs/ -# * Official Russian Documentation: http://nginx.org/ru/docs/ - -user nginx; -worker_processes auto; -error_log /var/log/nginx/error.log; -pid /run/nginx.pid; - -# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. -include /usr/share/nginx/modules/*.conf; - -events { - worker_connections 1024; -} - -http { - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - # Load modular configuration files from the /etc/nginx/conf.d directory. - # See http://nginx.org/en/docs/ngx_core_module.html#include - # for more information. - include /etc/nginx/conf.d/*.conf; - - server { - listen 80 default_server; - listen [::]:80 default_server; - return 301 https://$host$request_uri; - } - - server { - listen 443 ssl http2; - listen [::]:443 ssl http2; - root /usr/share/nginx/html/dbrepo-docs.ossdip.at; - index index.html index.htm; - server_name dbrepo-docs.ossdip.at; - ssl_certificate /etc/letsencrypt/live/dbrepo-docs.ossdip.at/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/dbrepo-docs.ossdip.at/privkey.pem; - include /etc/letsencrypt/options-ssl-nginx.conf; - ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; - - location / { - try_files $uri $uri/ =404; - } - - } - -# server { -# listen 443 ssl http2; -# listen [::]:443 ssl http2; -# root /usr/share/nginx/html/ossdip.at; -# index index.html index.htm; -# server_name ossdip.at; -# ssl_certificate /etc/letsencrypt/live/ossdip.at/fullchain.pem; -# ssl_certificate_key /etc/letsencrypt/live/ossdip.at/privkey.pem; -# include /etc/letsencrypt/options-ssl-nginx.conf; -# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; -# -# location / { -# try_files $uri $uri/ =404; -# } -# -# } - -} diff --git a/swagger/Dockerfile b/swagger/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..b7d9c039d8b56bad540a29c3fb26f812041e553d --- /dev/null +++ b/swagger/Dockerfile @@ -0,0 +1,35 @@ +FROM nginx:latest AS runtime +MAINTAINER Martin Weise <martin.weise@tuwien.ac.at> + +ARG SWAGGER_UI_VERSION=4.15.2 + +RUN echo 1 + +# reset +RUN rm -f /usr/share/nginx/html/* + +WORKDIR /app + +ADD "https://github.com/swagger-api/swagger-ui/archive/refs/tags/v${SWAGGER_UI_VERSION}.tar.gz" /app/tmp.tar.gz +RUN tar xzfv /app/tmp.tar.gz --strip-components 1 && rm -f /app/tmp.tar.gz + +COPY ./swagger-initializer.js ./swagger-initializer.js +COPY ./docker-build.sh ./docker-build.sh +RUN chmod +x ./docker-build.sh + +WORKDIR /usr/share/nginx/html/ + +# copy api +COPY ./index.html ./index.html +COPY ./api-analyse.yaml ./analyse/api.yaml +COPY ./api-authentication.yaml ./authentication/api.yaml +COPY ./api-container.yaml ./container/api.yaml +COPY ./api-database.yaml ./database/api.yaml +COPY ./api-identifier.yaml ./identifier/api.yaml +COPY ./api-metadata.yaml ./metadata/api.yaml +COPY ./api-query.yaml ./query/api.yaml +COPY ./api-table.yaml ./table/api.yaml +COPY ./api-units.yaml ./units/api.yaml + +# generate +RUN bash /app/docker-build.sh \ No newline at end of file diff --git a/swagger/api-document.yaml b/swagger/api-document.yaml deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/swagger/docker-build.sh b/swagger/docker-build.sh new file mode 100644 index 0000000000000000000000000000000000000000..c8d0630c91e615bc31172b834dac4a3f0d0a7188 --- /dev/null +++ b/swagger/docker-build.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +declare -A services +services[5000]=analyse +services[5010]=units +services[9091]=container +services[9092]=database +services[9093]=query +services[9094]=table +services[9096]=identifier +services[9097]=authentication +services[9098]=metadata + +function copy () { + echo "... copy dist to $1" + cp -r /app/dist/* "./$1" +} + +function init () { + echo "... copy initializer to $1" + cp /app/swagger-initializer.js "/usr/share/nginx/html/$1" +} + +function replace () { + echo "... replace server url of $1" + sed -i -e "s/localhost.*/dbrepo1.ec.tuwien.ac.at\/api/g" "./$1/api.yaml" + sed -i -e "s/Generated server url/TU Wien DBRepo/g" "./$1/api.yaml" +} + +for key in "${!services[@]}"; do + echo "Preparing ${services[$key]} API" + replace "${services[$key]}" + copy "${services[$key]}" + init "${services[$key]}" +done \ No newline at end of file diff --git a/swagger/generate.sh b/swagger/generate.sh index 677ce855f7cc4dca09fff0b7e7a342ef97e3e6d1..e22453902669f506b7dc5dcf892791546be9a565 100755 --- a/swagger/generate.sh +++ b/swagger/generate.sh @@ -1,13 +1,15 @@ #!/bin/bash declare -A services +services[5000]=analyse services[5010]=units services[9091]=container services[9092]=database services[9093]=query services[9094]=table -services[9097]=authentication services[9096]=identifier +services[9097]=authentication +services[9098]=metadata function retrieve () { echo "... retrieve api" diff --git a/swagger/index.html b/swagger/index.html new file mode 100644 index 0000000000000000000000000000000000000000..e730d640e2baa5e031974aea556a85df598bc7f1 --- /dev/null +++ b/swagger/index.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<head> + <title>DBRepo Endpoint Documentation</title> +</head> +<body> + <h3>DBRepo Endpoint Documentation</h3> + <ul> + <li><a href="/analyse">Analyse Service</a></li> + <li><a href="/authentication">Authentication Service</a></li> + <li><a href="/container">Container Service</a></li> + <li><a href="/database">Database Service</a></li> + <li><a href="/identifier">Identifier Service</a></li> + <li><a href="/metadata">Metadata Service</a></li> + <li><a href="/query">Query Service</a></li> + <li><a href="/table">Table Service</a></li> + <li><a href="/units">Units Service</a></li> + </ul> +</body> \ No newline at end of file diff --git a/swagger/swagger-initializer.js b/swagger/swagger-initializer.js new file mode 100644 index 0000000000000000000000000000000000000000..93d055f0cba235b1fe4124dc297184aedcd03e9a --- /dev/null +++ b/swagger/swagger-initializer.js @@ -0,0 +1,20 @@ +window.onload = function() { + //<editor-fold desc="Changeable Configuration Block"> + + // the following lines will be replaced by docker/configurator, when it runs in a docker-container + window.ui = SwaggerUIBundle({ + url: "api.yaml", + dom_id: '#swagger-ui', + deepLinking: true, + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout" + }); + + //</editor-fold> +}; \ No newline at end of file