Public | Automated Build

Last pushed: 2 years ago
Short Description
satis and satisfy server for composer with private github repos. Includes kubernetes config file.
Full Description

Docker Satis

A docker image and configuration to run Satis very easily in seconds:


  • docker
  • docker-compose
  • make

The default config file for satis looks like this:

    "name": "My Private Repo",
    "homepage": "https://satis.domain.tld",
    "repositories": [

Service management

  • Start
make start
  • Stop
make stop
  • Remove
make remove
  • Status
make state

Satis/Satisfy access

Default credentials are : admin / foo as you can see in this config file.
You will also find instructions to change or add credentials in this section of the file.

Configuration override (if needed)

  • Add your own custom config.json (aka satis.json)
  • Add your own custom config.php for Satisfy
    image: ypereirareis/docker-satis:4.2
        - ./config.php:/app/config.php
        - ./config.json:/satis-config/config.json

But I advise you to create your own image and Dockerfile:

FROM ypereirareis/docker-satis:4.2
ADD config.php /app/config.php
ADD config.json /satis-config/config.json

Build frequency

  • By default, building script is executed every minute thanks to the docker-compose configuration
    image: ypereirareis/docker-satis:4.2
        CRONTAB_FREQUENCY: "*/1 * * * *"
  • You can override this value changing the cron configuration: */5 * * * * OR */10 * * * *
  • Or you can disable cron with: CRONTAB_FREQUENCY=-1

SSH key

  • The container needs to know the ssh key you added in your private repo.
    image: ypereirareis/docker-satis:4.2
        - "~/.ssh/id_rsa:/var/tmp/id"

You could add the key into your own image but be careful your ssh key will be in the image (DO NOT SHARE THE IMAGE TO THE WORLD):

FROM ypereirareis/docker-satis:4.2
ADD SSH_PATH/.ssh/id_rsa:/var/tmp/id

  • The ssh fingerprints of private repos servers need to be added in the known_hosts file inside the container that's why we specify the URL through ENV variable.

You can now add the ssh port of your server and it supports rsa and dsa keys

    image: ypereirareis/docker-satis:4.2

Composer cache

Cache should be shared with the host to be reused when you restart the container, for better performance.

    image: ypereirareis/docker-satis:4.2
        - "/var/tmp/composer:/root/.composer"


If you want to build on port 8888 and access the interface on port 5000 :

    image: ypereirareis/docker-satis:4.2
        - 8888:3000
        - 5000:80

Outside world

If you want to give access satis to the outside world, you should use a reverse proxy.

Below is a working setup for NGINX:

server {
    server_name satis.domain.tld;

    location / {


This section will assume you have a Kubernetes cluster running, and have kubectl installed. There are two key steps to deploy to your Kubernetes cluster, first you need to store the required ssh-key as a secret, and your config.json as a configMap

  • Load the ssh key for private satis repos (this should be a deploy only github key, not your personal key).

    kubectl create secret generic github-ssh --from-file=id=/path/to/keyfile
  • Load the config file for sate using configMap

    kubectl create configmap satis-config --from-file=/path/to/production/config.json
  • Deploy the application

    kubectl create -f ./kube-satis.yaml


Docker Pull Command
Source Repository