Learn about PAS for OpenEdge in a Docker container
- Last Updated: March 30, 2020
- 3 minute read
- OpenEdge
- Version 12.2
- Documentation
Progress Application Server (PAS) for OpenEdge is available as a Docker image where applications can be developed, deployed, and run in an adaptive and isolated environment.
About Docker containers
Docker is a technology that enables developers to develop, deploy, and run an application in a stand-alone, virtualized environment called a container. Containers are a lightweight, standardized, and secure technique for executing software in an isolated environment. Using containers to isolate applications allows for faster and easier development and deployment.
As a developer, Docker containers enable you to deploy and upgrade your applications in a unified and simple process. Containers can automatically be created and destroyed to meet demand, providing scalability and flexibility. Containers also make it simple to use your applications across many machines and environments. These two factors allow you to develop software and deliver new features to customers with speed and agility.
Running PAS for OpenEdge in a Docker container is beneficial when you use PAS for OpenEdge and its deployed applications in a CI/CD pipeline where continuous updates and enhancements are required. When you run PAS for OpenEdge in a Docker container, both the application server instance and the applications deployed to the instance can be updated without affecting other running OpenEdge components (for example, the OpenEdge database).
Virtual machines offer a similar benefit as containers offer, but containers have the advantage because they do not virtualize hardware. Containers work on the application layer, and multiple containers share the same operating system kernel. This technology makes running multiple containers much more portable and efficient than running multiple virtual machines.
For more information about Docker, see What is a container? and the Docker Documentation.
Why use PAS for OpenEdge in a container?
- Docker containers help reduce overhead for packaging and deploying ABL applications, enabling you to streamline your application distribution processes. You only need to create a custom Docker container image with PAS for OpenEdge once, and then you can distribute that image and run as many containers as you need.
- When you upgrade your Docker containers for PAS for OpenEdge, you only need to upgrade one Docker image, and then you can easily redistribute the upgraded image.
- When you employ clustering tools such as Docker Swarm and Kubernetes, you can run multiple PAS for OpenEdge containers in a cluster, which provides high availability and elasticity.
Images and containers
A Docker image is the core component of a container. Docker builds images by reading instructions from a Dockerfile. Typically, a Docker container image includes its own execution environment with the code, run-time, system tools, libraries, and settings needed by the Docker daemon to instantiate the container and run an application. However, additional configuration and data can be injected into a container by using Docker volumes. A Docker container image can be used to run multiple containers, which provides flexibility and scalability. A Docker container is a runnable instance of a Docker image.
Sidecar design pattern
The sidecar design pattern uses two or more containers. Sidecar containers are attached to the primary application container, and they enhance and extend the primary application. Sidecar containers are created alongside the parent container and share the same life cycle. As an example, you could run your primary application in one container, and run your configuration settings for that application in a sidecar container. This structure enables you to be modular with your deployment, which means that you could swap out the sidecar container to change your configuration, or easily move your personalized configuration settings to another container.
Kubernetes
Kubernetes is an orchestration system that enables you to deploy and manage large clusters of containers automatically. With Kubernetes, applications scale dynamically and efficiently based on the level of demand. Progress recommends the Kubernetes platform if you use Docker containers. Kubernetes, see the Kubernetes website.