The simplest proxy service to access your Dockerized webapps by Git commit-id.
Alternatives To Pool
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
4 years ago409Shell
Babun - a Windows shell you will love!
5 months ago37Perl
Portable GitHub system into your own server
Private Bower692435 years ago71October 19, 201752otherJavaScript
A simple private bower registry
Wasm Git458
3 months ago9September 25, 202210otherC
GIT for nodejs and the browser using https://libgit2.org compiled to WebAssembly with https://emscripten.org
Github3376,5432,7753 days ago127November 28, 202262mitJavaScript
:octocat: semantic-release plugin to publish a GitHub release and comment on released Pull Requests/Issues
Love Gfw312
3 years ago2mitShell
🔥以社会主义核心价值观为指导思想,实现 Linux 和 MacOS 设备的全局智能分流
Next Editor305
a year ago41TypeScript
Standalone Git Editor on Browser
Git Resource182
7 days ago112apache-2.0Shell
tracks commits in a branch of a Git repository
8 years ago26otherRuby
The simplest proxy service to access your Dockerized webapps by Git commit-id.
10 months ago3August 07, 20222gpl-3.0Go
Alternatives To Pool
Select To Compare

Alternative Project Comparisons

🐳 pool 🐳

wercker status

The simplest proxy service to access your Dockerized web application by Git commit-id, branch or tag.

You can build and run your web application as a Docker container just to access http://<git-commit-id, branch or tag>.pool.dev for example.


  • Docker should be installed on your host machine
    • Our Vagrantfile is configured to have docker so you don't have to care about it if you try to run on Vagrant
  • Web application which you want to preview should be on Git repository
  • Git repository of the application has Dockerfile on root of the repository
    • Dockerfile is for a container which the application is going to be run

Quick start


You can run pool on your local Vagrant environment also.

Launch Vagrant box

It needs to install vagrant dns plugin before vagrant up. Just run after vagrant was installed:

vagrant plugin install vagrant-dns
vagrant dns --install
vagrant dns --start

then run:

vagrant up


You can give some configuration to pool in Vagrantfile.

Currently we some configurations for pool.

  • github-bot
    • It enables github integration
  • Git repository url
    • Your Git repository URL
  • Maximum numbers of comtainers
    • pool kills containers if the number of containers are over than this number automatically
  • Hostname
    • Hostname you want to use to access the environment

You can rewrite Vagrantfile like:

# If you'd like to enable github integration, uncomment below
s.args << "--github-bot"

# Set your repository for previewing by pool
s.args << "https://github.com/mookjp/flaskapp.git"
# Set the maximum number of containers runnning at the same time
s.args << "5"
s.args << [pool_hostname, pool_tld].join(".")

Access web application

To watch the web application on pool, you can do it just to access http://<git-commit-id>.pool.dev with your browser.

In the default setting, pool is configured for the web application maintained in the mookjp/flaskapp repository. You can see the flask app (which just outputs 'hello world') just visiting http://c8f48c60088bbae0d0fb25ed5fd04f4442b58617.pool.dev/ or http://master.pool.dev/.

AWS EC2 instances

Following is an example to install pool to Amazon Linux.

Instalation for Amazon linux

To install pool on your Amazon Linux, use following userdata. This example is for Amazon Linux AMI amzn-ami-hvm-2014.03.2.x86_64-ebs (ami-29dc9228)

# Setup script for pool
# NOTE: Run it as root
yum install -y git
yum install -y docker

# Install latest Docker
service docker stop
curl https://get.docker.com/builds/Linux/x86_64/docker-latest -o /tmp/docker
chmod +x /tmp/docker
cp /tmp/docker /usr/bin/docker
service docker start

# Download pool then run pool container
git clone https://github.com/mookjp/pool.git /app

# You can create `pool` image and run to execute `init_host_server` script.
# It gets 3 parameters:
# 1) Git repository URL
# 2) Maximum number of containers of web application
# 3) Hostname
/app/scripts/init_host_server "https://github.com/mookjp/flaskapp.git" 5 "dev.prevs.io"

Parameters of init-script

pool/scripts/init_host_server is a small util script to run pool container. It gets 3 parameters:

  1. Git repository URL
  2. Maximum number of containers of web application
  3. Hostname. you can get your hostname from your container of application as environment variable; POOL_BASE_DOMAIN so that you can set configuration related to hostname inside your container

Passing a SSH key to pool container

You may want to upload a SSH private key to pool container in case your git repository is hidden from public access.

Then you can place id_rsa at /app/docker/pool/keys/id_rsa in the server where pool is installed.

And id_rsa will be uploaded to /app/keys/id_rsa on the pool container which is going to be used to clone your application repository.

[email protected] ~ $ cat<<'EOS'>/app/docker/pool/keys/id_rsa
> ..........

[email protected] ~ $ sudo /app/scripts/init_host_server

[email protected] ~ $ sudo docker exec -it pool bash

[pool container]# ls -l /app/keys/id_rsa

How it works

The part of proxy in pool accesses your Git repository with commit id given as hostname then checkout source with Dockerfile. Dockerfile should be on the root of the repository. After checkout files, the container will be built by the Dockerfile and port is linked with front automatically. All you can do is just to access by URL like http://<git-commit-id, branch or tag>.pool.dev.

pool consists of two modules; proxy hook and container builder. handlers/hook.rb handles HTTP request as proxy. This is a hook script of matsumoto-r/mod_mruby. It forwards port which Docker container was assigned by Git-commit-id.

If there's no container which corresponds to Git-commit-id, build_server works to build Docker image then runs it. build_server sends build log so that you can confirm the status of build process while waiting.

If there is another proccess to build and run container, pool locks to run other process and waits until lock is over.



Popular Git Projects
Popular Proxy Projects
Popular Version Control Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Web Application