GithubHelp home page GithubHelp logo

the-concierge / concierge Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 4.0 3.42 MB

Developer friendly Docker orchestration, observations, and continuous integration

Home Page: https://the-concierge.github.io

License: MIT License

HTML 0.24% TypeScript 58.24% Vue 40.40% Dockerfile 0.13% JavaScript 0.99%
concierge docker continuous-integration continuous-delivery testing-tools typescript nodejs node

concierge's Introduction

Concierge Build Status

User-friendly Docker based Continuous integration and a bit of orchestration with Node.js Previously at paypac/node-concierge

Documentation is available at the-concierge.github.io

Concierge Example

What does the Concierge do?

  • It can manage local or remote Docker hosts
  • Provides a simple Web UI for controlling containers, hosts, images and applications
  • Builds Docker images from Git repository branches or tags
  • It uses the Dockerfile provided or a custom Dockerfile elsewhere in the repository to build a Docker image
  • It pushes images to a Docker registry
  • Allows configurable creation of containers from images
  • Monitors memory and CPU usage of containers

How can I contribute?

See the Contribution Guide

How do I set up a Concierge from scratch?

To control your local install of Docker on Windows, Mac or Linux

After starting the concierge:

  • Create a new Host
  • Set the Vanity hostname to localhost, 127.0.0.1 or any other hostname your machine uses
  • That's it!

External Requirements*

  • Docker Registry (Optional)
  • The registry isn't needed for the Concierge to run
  • This registry should be private. I.e., only accessible inside a private network
  • NodeJS 6.4+
  • This is to use the native V8 debugger

Configuration

Environment Variables

  • CONCIERGE_DB_PATH: The path to store the application's SQLite database
  • CONCIERGE_PORT: The port for the HTTP server

Launch with custom values

  • path: Location for the SQLite database
  • port: Port for the HTTP API
# E.g.
> the-concierge --path=/Users/me/concierge.sqlite --port=3141

Installation

Method 1: Global NPM package

Install globally using NPM
When used a command line utility, the Concierge uses PM2 and is run as a daemon.

> npm install the-concierge -g
> the-concierge start
> the-concierge status

Method 2: Docker

Use the public Docker image

# Specify the flag below to keep a local copy of the Concierge SQLite database
# -v /your/host/folder:/concierge/db

# With access to your local Docker socket
> docker run -dt -p 3141:3141 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name concierge theconcierge/concierge:latest

# Without access to your local Docker socket
> docker run -dt -p 3141:3141 --restart=always --name concierge theconcierge/concierge:latest

Method 3: Manual build

Build and run manually

  • Clone the repository
  • Build the project with yarn or npm
  • With yarn:
    • yarn
    • yarn build
  • With npm
    • npm install
    • npm run build

Running

  • npm start or node .

Configuration Configure the Docker registry URL

  • Navigate to the Configuration View
  • Set Docker: Registry URL to the URL of the Docker Registry
  • See below for instruction for setting up a Docker Registry

How do I set up a Docker registry?

Using the Concierge

You can use the Concierge to pull and run the Docker Registry

  1. Go to the Images view
  2. Click on Pull Image
  3. Enter image name registy and tag latest
  4. Click Pull
  • The image will automatically appear in the Images list once it has been downloaded
  1. Click Run on the registry:latest image in the Images list
  2. Ensure the 5000 port is exposed
  • It is highly recommended to provide a fixed port

Using the scripts provided

In package.json there is create-registry script provided. It will:

  • Create a certificate
  • Create a container from registry:latest and use the previously created certificates

Manually

The simplest way to do this is to use the public Docker image.

  • sudo docker pull registry:latest
  • sudo docker run -d -p 5000:5000 --name=registry -v /var/registry:/var/lib/registry --restart=unless-stopped registry:latest

-d
detached mode. The terminal used to execute the command won't be attached to the new container input/output.

-p hostPort:containerPort
exposed port. allows all hosts and concierges to connect to the registry.

--name
human readable name of the container

--restart=unless-stopped
always restart the container except at startup if the container has been manually stopped

-v hostPath/containerPath
store data from the containerPath on the host at hostPath

registry:latest
the name and tag of the Docker image we are using

I want to create an Image

To create/build an image, the following is required:

  • At least one Host
  • At least one Application
  • (Optional) A private registry is configured
    • This is required to pushing images to your internal registry after a successful build

Hosts

At least one Host is required to create Containers and to build/push images.
See Host.md

Applications

At least one Application should be set up.
See Application.md

Analytics

concierge's People

Contributors

lorezzed avatar seikho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

concierge's Issues

Implement container log viewing

  • Create route for retrieving logs
  • Provide UI for viewing logs
  • Provide functionality to follow logs
  • Remove colour codes from output or display colour in view

Re-implement reverse proxy

As a user, I want to create vanity URLs for containers, so that URLs are easier to remember, use, and share.

Add search filter to containers view

As a user, I want to filter the containers by name to quickly find a container

A/C

  • Add an input text field to the containers view
  • Filter the containers by the input text

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.