Repository List is a web application for browsing and filtering Docker repositories.
npm install -g nvm
nvm install
npm install
cp bin/environment bin/environment.local
vi bin/environment.local
GOOGLE_CLIENT_ID="foo" # replace with real client id
GOOGLE_CLIENT_SECRET="bar" # replace with real client secret
bin/serve-local
Repository List requires the following of the local system:
- A Unix-like operating system
- bash
- openssl (for generating self-signed cert for https)
- NodeJS/npm
- nvm
nvm is a tool for managing multiple versions of the NodeJS runtime and global
packages. nvm can be installed for your system version of NodeJS with npm install -g nvm. After nvm is installed, it may be used by executing nvm install from within the repository-list root directory to initially install
the correct version of NodeJS. Subsequently, the nvm use command will switch
to the appropriate version of NodeJS.
Dependencies for local development and runtime may be installed by executing
npm install in the repository-list root directory.
A set of default environment variables can be found in bin/environment. For
the local development server, this file can be copied to
bin/environment.local and modified.
Repository List uses Google OAuth2 for user authentication and requires that
the GOOGLE_CLIENT_ID, and GOOGLE_CLIENT_SECRET be set with valid values
from Google APIs.
Upon starting, the Repository List server will generate random namespaces and
repositories. The number of each of these may be controlled via the
GENERATE_{MIN,MAX}_NAMESPACES and GENERATE_{MIN,MAX}_REPOSITORIES
environment variables.
For the sake of testing/demonstration, the INJECT_MIN_LATENCY and
INJECT_MAX_LATENCY environment variables can be set to describe a range of
durations in milliseconds to add to each API request (does not apply to static
files or auth). While random, the durations of the delays will approximate a
normal distribution.
The bin directory contains scripts useful for developing Repository List.
These scripts are written in bash and NodeJS and provide an automated build
system and development server.
bin/serve-local: Starts the Repository List server and watches the filesystem
for changes in the source code. When code is updated, the appropriate build
step will be automatically run to use the new code. Specifically:
- A CA root certificate and server certificate will be generated
- Vendor JS will be bundled and copied to the server
(handled by
bin/build-vendor) - Updating the files in
src/staticwill update them on the server (handled bybin/watch-static) - Updating the LESS source will rebuild and bundle the client CSS
(handled by
bin/watch-less) - Updating the client source will rebuild and bundle the client JS
(handled by
bin/watch-client)