Giter Club home page Giter Club logo

rapidoc-docker's Introduction

RapiDoc OpenAPI Viewer Docker Image

This repository contains the definition Docker Image for RapiDoc, which is an OpenAPI viewer. The documentation is exposed via a modified nginx:1.17.6-alpine image that cotains the production packaging of RapiDoc.

Getting Started

   make start

This command will build the RapiDoc image and start the container to expose the API on port 8080.

Other relevant make commands:

   make build     # build the docker image for RapiDoc.
   make clean	  # shuts down the docker network and deletes the image for RapiDoc.

Folder Content

   |- docker
   |  |- boot.sh              # initialisation script for the container.
   |  |- defaults.env         # default settings for the RapiDoc viewer.
   |  |- index.html.template  # template html page for the RapiDoc viewer.
   |  |- html                 # HTML assets (favicon, logo, additional javascript).
   |
   |- .dockerignore           # exclude files from docker context
   |- .gitignore              # exclude files from git
   |- Dockerfile              # docker image definition
   |- Makefile                # make instructions for this folder
   |- README.md               # this file.

Configuring the Viewer

All the options that can be used to configure the RapiDoc viewer can be used to style the web application by passing environment variables to the container. The default values for these variables are stored in the docker/defaults.env file.

NOTE: the attribute spec-file is not supported and only spec-url is used as a pre-built setup.

For more details about the meaning of these attributes please see the RapiDoc documentation

Specification Configuration

  • TMPL_RAPIDOC_API_MANIFEST_URL (default: empty): this is the URL to the manifest file. This parameter is utilised in place of TMPL_RAPIDOC_SPEC_URL for serving multiple OpenAPI specifications and being able to switch among them. For more details about capability check the section Serving Multiple OpenAPI Specifications.
  • TMPL_RAPIDOC_LOGO_URL (default: ./logo.png): this is the url of the logo that is shown in the viewer. You can customise it by either replacing the docker/html/logo.png file or simply modifing the container to point to another file.
  • TMPL_RAPIDOC_SPEC_URL (default: openapi.json): maps to spec-url
  • TMPL_RAPIDOC_SERVER_URL (default: TMPL_RAPIDOC_SERVER_URL): maps to server-url
  • TMPL_RAPIDOC_DEFAULT_API_SERVER (default: empty): maps to default-api-server

UI Appearance

  • TMPL_RAPIDC_HEADING_TEXT (default: Platform API Documentation): maps to heading-text
  • TMPL_RAPIDOC_THEME (default: light): maps to theme
  • TMPL_RAPIDOC_BG_COLOR (default: empty): maps to bg-color
  • TMPL_RAPIDOC_TEXT_COLOR (default: empty): maps to text-color
  • TMPL_RAPIDOC_HEADER_COLOR (default: empty): maps to header-color
  • TMPL_RAPIDOC_PRIMARY_COLOR (default: empty): maps to primary-color
  • TMPL_RAPIDOC_REGULAR_FONT (default: empty): maps to regular-font
  • TMPL_RAPIDOC_MONO_FONT (default: empty): maps to mono-font
  • TMPL_RAPIDOC_NAV_BG_COLOR (default: empty): maps to nav-bg-color
  • TMPL_RAPIDOC_NAV_TEXT_COLOR (default: empty): maps to nav-text-color
  • TMPL_RAPIDOC_NAV_HOVER_TEXT_COLOR (default: empty): maps to nav-hover-text-color
  • TMPL_RAPIDOC_NAV_HOVER_BG_COLOR (default: empty): maps to nav-hover-bg-color
  • TMPL_RAPICOD_NAV_ACCENT_COLOR (default: empty): maps to nav-accent-color

Layout

  • TMPL_RAPIDOC_LAYOUT (default: row): maps to layout
  • TMPL_RAPIDOC_SORT_TAGS (default: false): maps to sort-tags
  • TMPL_RAPIDOC_GOTO_PATH (default: empty): maps to goto-path
  • TMPL_RAPIDOC_RENDER_STYLE (default: read): maps to render-style
  • TMPL_RAPIDOC_API_LIST_STYLE (default: group-by-tag): maps to api-list-style
  • TMPL_RAPIDOC_SCHEMA_STYLE (default: tree): maps to schema-style
  • TMPL_RAPIDOC_SCHEMA_EXPAND_LEVEL (default: 999): maps to schema-expand-level
  • TMPL_RAPIDOC_SCHEMA_DESCRIPTION_EXPANDED (default: true): maps to schema-description-expanded
  • TMPL_RAPIDOC_DEFAULT_SCHEMA_TAB= (default: model): maps to default-schema-tab
  • TMPL_RAPIDOC_SHOW_HEADER (default: true): maps to show-header
  • TMPL_RAPIDOC_SHOW_INFO (default: true): maps to show-info

Functionalities Switches

  • TMPL_RAPIDOC_ALLOW_AUTHENTICATION (default: true): maps to allow-authentication
  • TMPL_RAPIDOC_ALLOW_SEARCH (default: true): maps to allow-search
  • TMPL_RAPIDOC_ALLOW_TRY (default: false): maps to allow-try
  • TMPL_RAPIDOC_ALLOW_API_LIST_STYLE_SELECTION (default: true): maps to allow-api-list-style-selection
  • TMPL_RAPIDOC_ALLOW_SERVER_SELECTION (default: false): maps to allow-server-selection
  • TMPL_RAPIDOC_ALLOW_SPEC_URL_LOAD (default: false): maps to allow-spec-url-load
  • TMPL_RAPIDOC_ALLOW_SPEC_FILE_LOAD (default: false): maps to allow-spec-file-load

API Key Settings

  • TMPL_RAPIDOC_API_KEY_NAME (default: Authorization): maps to api-key-name
  • TMPL_RAPIDOC_API_KEY_LOCATION (default: header): maps to api-key-location
  • TMPL_RAPIDOC_API_KEY_VALUE (default: empty): maps to api-key-value

Modifying the Template

The basis structure of the viewer is modelled upon docker/index.html.template. You can alter and modify this HTML template document to further customise the appearance of the API documentation.

Serving Multiple OpenAPI Specifications

The default template for RapiDoc has been modified to support the capability of serving multiple OpenAPI specification which are pre-configured with the server. This is done by specifing the value of TMPL_RAPIDOC_API_MANIFEST_URL to point to a JSON file containing the catalog of API specification available. Here is an example of the manifest file:

   {
      "default" : "./specs/openapi.json",
      "specs" : [{
         "title" : "First Spec",
         "url" : "./specs/first-openapi.json",
         "description" : "First OpenAPI Specification"
      },{
         "title" : "Second Spec",
         "url" : "./specs/second-openapi.json",
         "description" : "Second OpenAPI Specification"
      },{
         "title" : "OpenAPI Spec",
         "url" : "./specs/openapi.json",
         "description" : "Default OpenAPI Specification"
      }] 
   }

This particular file instructs the viewer to create a selective menu in the application (the current template places button in the left corner of the application bar) and to configure the viewer to visualise the default option ./specs/openapi.json. If the manifest URL is omitted the default behaviour falls back to showin the pre-configured API specification identified with the TMPL_RAPIDOC_SPEC_URL environment variable.

In order to modify how the menu is created and looks and feel it is sufficient to alter two files:

  • docker/index.html.template: for the styling and the basic structure of the menu.
  • docker/htmls/api-selector.js: for modifying the logic associated to the initial loading and selection of the OpenAPI specification.

rapidoc-docker's People

Contributors

hyp0th3rmi4 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

rapidoc-docker's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.