-
Notifications
You must be signed in to change notification settings - Fork 470
Docker Compose Environment
It is possible to use docker-compose to spin up a small development/demo environment. The environment consists of three Docker containers linked together:
- web: this is the container running Portus. It's based on the official rails Docker image.
- db: this is the container running the database required by Portus. It's based on the official mariadb Docker image.
- registry: this is a the container running the latest version of the Docker registry (aka distribution). It's based on the official registry Docker image.
This environment is meant for development/playground purposes. Known limitations:
- Portus uses a public and passwordless certificate stored inside of this git repository.
- Registry is not secured, everything is transmitted over http.
- The Docker host has two open two ports in order to make Portus and the registry reachable.
First of all ensure you have docker-compose installed. Note that this setup is known to fail on NFS. Then do:
$ ./compose-setup.sh
This will:
- Download the
rails
Docker image from the Docker Hub. - Build the
portus_web
Docker image. - Download the
mariadb
Docker image from the Docker Hub. - Start the
portus_db
container and link it against a running instance of theweb
container. - Download the
registry
Docker image from the Docker Hub - Start the
portus_registry
container and link it against a running instance of theweb
container. - Initialize Portus' database: database creation, run the migrations.
Once the setup is done there are a couple of manual operations to perform on Portus:
- Create your account. The first user is going to be an administrators. Administrators are special users, they can do everything, including pushing to the global namespace of your registry.
- Associate your on-premise instance of the Docker registry.
The setup script will print all these informations on the console.
Portus' UI will be accessible on http://<docker host>:3000
.
The registry will be listening on `:5000.
Once the initial setup is done you can use docker-compose
to handle everything.
You can do:
-
docker-compose up
to start the whole environment -
docker-compose stop
to stop the whole environment
All the changes (database, registry) are stored into Docker volumes.
Whenever you change the host, remember to remove two generated files: docker/environment
and docker/registry/config.yml
. Not doing so is a common pitfall, and it will result in Portus not working reliably. Instead, you will need to remove these files and execute the compose-setup.sh
script again.
The compose-setup.sh
script respects previous values of the $DOCKER_HOST
environment variable. Therefore, if you are targeting a remote host, you can call this script like this:
$ DOCKER_HOST=my.docker.host ./compose-setup.sh
Before doing so, if you had executed this script before, just remember to clean your previous environment.
- Docker compose
1.5.1
has an upstream bug which causes Portus to not function correctly. If you've tried to run Portus with1.5.1
, remove thedocker/registry/config.yml
anddocker/environment
files and upgrade to the latest version of Docker compose. - If you are using openSUSE, it's known that the firewall clashes with Docker's networking. You might need to stop the firewall and restart the docker daemon.