Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

License: MIT

Dockerized OpenTOSCA Environment

Docker Compose file for running the entire OpenTOSCA stack.

⚠️ On newer docker installations docker-compose will be integrated into the docker cmd. If this is the case then all docker-compose commands must be written as docker compose (without the hyphen)! (See Compose V2 and the new docker compose command)

The fastest way to get started is using Docker Compose:

  • Create a .env file by coping it from _.env

  • Add your publicly available FQDN or IP address to the PUBLIC_HOSTNAME variable in the .env file and save it
    (see also I don't know my public IP)

  • Execute the following command:

    docker-compose up

Wait a few seconds, then open the OpenTOSCA user interface.

More useful commands can be found in section Useful Commands.

Short Container Overview

A more detailed overview can be found in the docs folder.

OpenTOSCA Component URL GitHub Docker Hub
OpenTOSCA UI http://localhost
Link Link
OpenTOSCA Modelling (Eclipse Winery) http://localhost/winery
Link Link
OpenTOSCA Container API http://localhost:1337 Link Link
OpenTOSCA Container Repository http://localhost:8081 Link Link
Plan Engine BPEL (Apache ODE) http://localhost/ode
Link Link
Plan Engine BPMN (Camunda) http://localhost/camunda
Link Link
IA Engine (Apache Tomcat) http://localhost/manager
(user: admin, password: admin)
Link Link

Make sure following ports in your environment are free in order to start OpenTOSCA properly:

  • 1337
  • 8080-8088
  • 8090
  • 8091
  • 8092
  • 9763
  • 1883
  • 9000 (optional)

It is recommended that your host or virtual machine has at least 4GB of memory.

NOTE: Please check the Docker Daemon Settings


The steps to deploy OpenTOSCA in production can be found in docs/

How-To Guides for Developers (and Advanced Users)

How-Tos explaining how to realize specific scenarios can be found in docs/

Tips and Tricks

Useful Commands

⚠️ New installations of docker-compose are integrated into the docker command and must be run as docker compose (without the hyphen)! (See Compose V2 and the new docker compose command)

In most cases starting the containers in the background and attaching to the log of select containers in different terminals will provide the best experience.

# Start services in background
docker-compose up -d

# Attach to container log in first terminal
docker-compose logs -f container

# Attach to engine logs in second terminal
docker-compose logs -f engine-ia engine-plan

# Shutdown services
docker-compose down

To pull the latest images and ensure that they are run remove the existing containers at shutdown:

# Shutdown services and remove container
docker-compose down -v

# Shutdown services and remove containers (including containers from unspecified services)
docker-compose down -v --remove-orphans

# Pull the latest images
docker-compose pull

Other useful commands:

# Validate and view the resulting configuration
docker-compose [-f <file> ...] config

# Display useful logs
docker-compose logs -f [--tail=1 <SERVICE_NAME>...]
docker-compose logs -f container
docker-compose logs -f engine-ia engine-plan


Not enough RAM for the Docker Daemon?

The OpenTOSCA environment needs about 6GB of RAM to run smoothly. For a good user experience set up your Docker environment accordingly:

Docker MAC Seetings

Slow Startup of some Containers

On some linux systems the following problem arises:

The easiest way right now to fix it is the following: bash apt-get install haveged -y

Some containers immediately crash after starting the environment.

​ The amount of RAM that Docker is allowed to use is probably too small.

=> See Not enough RAM for the Docker Daemon?

StackOverflow exception in the engine-plan container

​ This is usually a problem with the configured stack size in Java. You can try to fix it by allowing the Java runtime in the container to use more space. Therefore, add the following lines to your docker-compose.override file: ​

      _JAVA_OPTIONS: "-Xmx3048m -Xms512m -Xss4m"

⚠️ The underscore in front of the variable name is important. If it is missing, the override does not work!

The Winery CSAR Repository does not work Correctly (missing git-lfs)

The git repositories used by winery use git lfs as they contain large binary files which are not checked in to the git tree. This can be a problem if you use a locally installed Winery or have mapped existing git repositories into the Winery container.

To install git lfs follow these steps:

  1. Install git lfs on your machine (see the git lfs homepage or the wiki)
  2. run git lfs install in all git repositories used by your Winery (first cd into the git repository)
  3. run git lfs pull to download the binary files

⚠️ If the lfs-files are not downloaded, the repository, and thus the modeled applications, cannot run! Thus, ensure you run git lfs pull in every repository used by your Winery.

💡 To install git lfs globally, run git lfs install --system. This makes git lfs automatically available for all repositories and you do not have to run git lfs pull yourself. This only works for newly cloned git repositories so make sure to check all existing repositories manually.

I don't know my public IP

Windows: Open a command line and type ipconfig then search for the IPv4 or IPv6 address of the wlan or ethernet adapter currently in use. If you know the hostname of your machine you can also try ping yourHostnameHere or ping yourHostnameHere.local to get the IP. To get the hostname use the command hostname. To get all IP addresses known for the hostname try nslookup yourHostnameHere.

Mac: The IP address can be found in the "System Preferences" under "Network". Options with a green dot are active and should have an IP address that can be found by selecting the option, then clicking "Advanced" and opening the "TCP/IP" tab. Alternatively use the command ifconfig in the shell and look for inet or inet6 addresses for the ethernet or wlan interfaces in use.

Linux: Use the command ip addr show (or shorter ip a s) in a shell to list the IP addresses of all available interfaces and look for inet or inet6 addresses for the ethernet or wlan interface(s). On older linux systems where this command is not available use ifconfig instead. If you know the hostname of your machine you can also try host yourHostnameHere or host yourHostnameHere.local to get the IP. To get the hostname use the command hostname.

If you are unsure which IP to choose, start with one, run the docker-compose and test with which IPs both the OpenTOSCA UI and the Winery can be reached. Use the IP address that reaches both.

⚠️ Do not use the addresses or ::1: as these are special addresses (local loopback).

⚠️ If you want to use an IPv6 Address in the address line of your browser, then you need to enclose the Address in [] (e.g. [2607:f0d0:1002:51::4] or [2607:f0d0:1002:0051:0000:0000:0000:0004]). Do not use [] in the PUBLIC_HOSTNAME environemnt variable!

Networking Problems

Make sure that the PUBLIC_HOSTNAME environemnt variable is set and points to your local machine running the docker-compose file. Test if you can reach the open ports of all containers with that address. See Container Overview for a more detailed description of the container ports and dependencies between containers. See also About the Network for background information of the bridge network setup in the docker compose file.

Windows and Mac users may use host.docker.internal as PUBLIC_HOSTNAME if all containers are started locally in docker-compose. This will not work for development setups where some parts of OpenTOSCA are started outside of the docker-compose network! Mac users need to apply a workaround described in About the Network for this to work.

In rare cases the port 8080 of the winery container may be inaccessible. In these cases it may help to change the port in the docker-compose file (e.g. to 8079:8080 [<outside-port>:<container-port>]) and use the config options described in How to configure the OpenTOSCA UI to use a different Winery repository to point the OpenTOSCA ui to the new port for the Winery.


Dies ist ein Forschungsprototyp. Die Haftung für entgangenen Gewinn, Produktionsausfall, Betriebsunterbrechung, entgangene Nutzungen, Verlust von Daten und Informationen, Finanzierungsaufwendungen sowie sonstige Vermögens- und Folgeschäden ist, außer in Fällen von grober Fahrlässigkeit, Vorsatz und Personenschäden ausgeschlossen.

Disclaimer of Warranty

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.