Reference16r1:Concept innovaphone App Platform Container: Difference between revisions

From innovaphone wiki
Jump to navigation Jump to search
 
Line 152: Line 152:
If you encounter a high load, you need to verify whether the load is actually coming from your container. Docker containers always display the load of the physical host system.
If you encounter a high load, you need to verify whether the load is actually coming from your container. Docker containers always display the load of the physical host system.


It may be that the Docker host itself is also virtualized as an LXC container, and your Docker instances are running within it. In such a setup, the system load of the physical host is displayed because <code>/proc/loadavg</code> is not isolated per logical layer.
It may be that the Docker host itself is also virtualized as an LXC container, and your Docker instances are running within it. In such a setup, the system load of the physical host is displayed because <code>/proc/loadavg</code> is not isolated per logical layer.


An increased load in the container therefore does not automatically mean that the container itself is the cause or that you have a problem at all. In short: To assess the load, you always need information (e.g., number of CPU cores or I/O information) from the physical host.
An increased load in the container therefore does not automatically mean that the container itself is the cause or that you have a problem at all. In short: To assess the load, you always need information (e.g., number of CPU cores or I/O information) from the physical host.

Latest revision as of 13:07, 19 March 2026

FIXME: Below described feature is experimental and not officially supported for use in productive environments.

The innovaphone App Platform Container provides a myApps App Platform instance that includes the AP Manager, Webserver and PostgreSQL. This container offers a ready-to-use environment for myApps applications and the innovaphone PBX.

Applies To

  • innovaphone App Platform Container

Requirements

  • Host with docker on a x86_64 (amd64) platform
  • innovaphone App Platform Container

Concept

The innovaphone App Platform Container provides the innovaphone App Platform for container environments (Open Container Initiative (OCI) format).

  • The App Platform Manager and Webserver Apps are already integrated in the container and provide the already known functionality.
  • Apps are installed, updated and managed as usual.
  • The mount point will be used for the database, the App binaries and log files.

Image Information

This chapter provides details about the Docker image used for the innovaphone App Platform.

Repository Details

Repository Host
docker.innovaphone.com
Image Name
cloud/kubernetes/innovaphone-platform-instance
docker.innovaphone.com/cloud/kubernetes/innovaphone-platform-instance:latest

Tagging and Versioning

The image is usually tagged with the build number according to innovaphone software releases:

Latest Tag
Use the latest tag for pulling the most recent service release.
Release Build Number
For production or version-specific deployments, use a specific build number as the tag (e.g., 130006).

Example:

docker pull docker.innovaphone.com/cloud/kubernetes/innovaphone-platform-instance:130006

Supported Architecture

This Docker image supports the linux/amd64 architecture.

Image Reference

An example of a full image reference using a specific release build number would be:

docker.innovaphone.com/cloud/kubernetes/innovaphone-platform-instance:130006

Ports

This chapter outlines the various ports exposed by the container. The webserver ports are available immediately upon container startup, after start of the AP Manager and the Webserver, while the additional application ports become active after the app installation. In most cases, a one-to-one mapping is used, meaning the container port is mapped directly to the same host port unless otherwise specified.

Ports < 1024

On most docker hosts, a container won't be able to use ports below 1024, unless the container is started with higher privileges. This shouldn't be neccessary anyways as all ports can be configured to higher ports.

Webserver Ports

HTTP

Container Port: 8080 Description: Used for accessing the built-in webserver immediately upon container startup.

HTTPS

Container Port: 8082 Description: Used for accessing the built-in webserver immediately upon container startup.

Additional Application Ports

Following additional container ports are avilable depending on installed and configured applications:

H323/TLS
1300
SIP
5060
SIPS
5061
LDAPS
1636
SMTP
8025
SMTPS
8587
STUN/TURN
3478 UDP/TCP

Additional hint for Portmapping

docker run -d \
  --name=innovaphone \
  --restart unless-stopped \
  -p 9090:8080 \        #Container Host Port (external) 9090:8080 Container Port
  -p 9091:8082 \
  -p 5060:5060 \
  -p 5061:5061 \
  -p 1300:1300 \
  -p 1636:1636 \
  -p 8025:8025 \
  -p 8587:8587 \
  -p 3478:3478 \
  -p 3478:3478/udp \
  -v /path/of/data/innovaphone:/mnt/data \      #in this path you will find Apps, DBs & Logs
                                                #this path musst be used for backups!!
  -e WEBSERVERPORTHTTP=8080 \
  -e WEBSERVERPORTHTTPS=8082 \
  -e LOG_FLAGS=7 \
  -e LOG_SIZE=1048576 \
  -e DNSIPV4=8.8.8.8 \
  -e LIMIT_RAM=512 \        #Ram limit in MB
  -e LIMIT_DISK=10 \        #disk size in GB
  -e TZ=Europe/Berlin \
  docker.innovaphone.com/cloud/kubernetes/innovaphone-platform-instance:latest

Environment Variables (ENVs)

This chapter outlines the key environment variables used to configure the behavior of the innovaphone App Platform Container. These variables allow you to customize logging, port settings, resource limits, and more during startup and runtime.

LOG_FLAGS
Defines the integer representation for the trace flags of the AP Manager, according flags activated under the AP Manager / Diagnostics. See browser console message on Save button press (e.g. "logFlags":1 , if the "App" flag is activated).
LOG_FLAGS=7
LOG_SIZE
Specifies the maximum size in bytes for logs before rotation or management actions occur. Default: 5242880.
LOG_SIZE=1048576
WEBSERVERPORTHTTP
Sets the in-container HTTP port for the webserver. Default: 8080.
WEBSERVERPORTHTTP=8080
WEBSERVERPORTHTTPS
Sets the in-container HTTPS port for the webserver. Default: 8082.
WEBSERVERPORTHTTPS=8443
DNSIPV4
Specifies the in-container DNS server IPv4 address for DNS resolution. Overrides the default container runtime DNS server.
DNSIPV4=8.8.8.8
DNS_DOMAIN
The FQDN of the App Platform that can be used to access the app services. This optional parameter is used as a static DNS entry added to /etc/hosts. The destination IP address is the resolved IP address behind INTERNAL_DNS_DOMAIN or NAMESPACE.
DNS_DOMAIN=ap.example.com
INTERNAL_DNS_DOMAIN
The internal FQDN of the App Platform. This FQDN is used to resolve the internal IP address of the App Platform, to be mapped from DNS_DOMAIN in /etc/hosts.
INTERNAL_DNS_DOMAIN=my-apps-deployment.my-namespace.svc.cluster.local
NAMESPACE
The Kubernetes namespace used to build internal FQDN of the App Platform. Used with DNS_DOMAIN to map it to the IP address of ap.my-namespace.svc.cluster.local.
NAMESPACE=my-namespace
LIMIT_RAM
Sets the RAM limit for the container, in MB, controlling how much memory it may consume. Used by AP Manager to stop the app instances on overconsumption.
LIMIT_RAM=512
LIMIT_DISK
Defines the disk space limit in GB for the container to manage storage consumption. Used by AP Manager to stop the app instances on overconsumption.
LIMIT_DISK=10

Volumes and Mounts

This container uses a dedicated internal mount path for the persistent data management across container restarts and updates.

Internal Data Volume

Mount Path
/mnt/data
Contents
  • Apps: Installed application binaries.
  • Databases: PostgreSQL files.
  • Logging: Log files for system and application events.

Mounting

To ensure that your data is preserved, map a host directory or Docker named volume to the container's /mnt/data path when running the container. For example:

docker run -d -v /path/on/host:/mnt/data docker.innovaphone.com/cloud/kubernetes/innovaphone-platform-instance:130006

This setup guarantees that your apps, associated data, databases, and logs persist independently of the container lifecycle.

Entrypoint

The container uses a fixed entrypoint:

ENTRYPOINT ["/entrypoint.sh"]

This script prepares the container and starts the AP Manager executable.

Logging and Monitoring

The log of the entrypoint.sh and of the AP manager is avilable as conatiner output. The installed applications store the ir log files under /mnt/data/var/log/apps/.

Unexpected high system load

If you encounter a high load, you need to verify whether the load is actually coming from your container. Docker containers always display the load of the physical host system.

It may be that the Docker host itself is also virtualized as an LXC container, and your Docker instances are running within it. In such a setup, the system load of the physical host is displayed because /proc/loadavg is not isolated per logical layer.

An increased load in the container therefore does not automatically mean that the container itself is the cause or that you have a problem at all. In short: To assess the load, you always need information (e.g., number of CPU cores or I/O information) from the physical host.

Usage Example

sudo docker run -d --restart unless-stopped --name innovaphoneAP -p 9090:8080 -p 9091:8082 -e WEBSERVERPORTHTTP=8080 -e WEBSERVERPORTHTTPS=8082 -v $(pwd)/myapps/:/mnt/data docker.innovaphone.com/cloud/kubernetes/innovaphone-platform-instance:latest

This command runs the container in detached mode with automatic restart. It names the container innovaphoneAP, maps host ports 9090 and 9091 to the container's HTTP and HTTPS ports, sets the webserver port environment variables, mounts a host directory to /mnt/data, and starts the AP Manager. After container start up the AP manager web UI is accessible via http://localhost:9090 or https://localhost:9091.