This is a guide for installing and running Appian in Docker containers. To learn more about containers, go to Docker's page: What Is A Container.
Containerization allows for a simplified method of installing and running Appian while ensuring a consistent environment. After following these instructions, you will have five (optionally, six) containers running the various components of the Appian software, which can be started and stopped together with a single command.
web-application
- the Appian web applicationsearch-server
- the Appian search serverservice-manager
- the Appian engines and related coordination processesdata-server
- the Appian data serverrdbms
- relational database management system
web-server
- (optional) Apache web server which proxies requests for the application serverSupported operating systems:
The installation instructions use Linux path separators. When installing on Windows, be sure to use the appropriate path separators.
In order to follow this guide, first download the following software and tools.
Download | Notes |
---|---|
Docker | Download the version appropriate for your operating system. |
Docker Compose | Docker for Windows 10 and MacOS already includes Docker Compose. Linux requires this download and additional steps. |
MySQL Connector/J 5.1.47 | Download either the zip or the tar. If you are not using 5.1.47, you'll need to update appian-docker/build-conf/tomcatResources.xml after performing the Pre-Build Configuration steps. See the Install RDBMS Driver section for more details about changing module.xml. |
Appian Installer for Linux | From the SUPPORT tab of MyAppian, click DOWNLOADS. |
Appian k3 and k4 Licenses for Linux | These instructions require valid Appian license files that match the hostnames of the containers. Unless you already have both a k3 and k4 license, please request a Temporary License from Appian Support. |
Appian Docker Tools 20.3-1 | This zip file includes the configuration files and scripts for creating images and running the containers. |
C:\
drive./Users
, /Volumes
, /private
, /tmp
. These should be shared by default.In the Docker Advanced settings, set the hardware allocation:
Use Case | CPU Minimum | Memory Minimum |
---|---|---|
Proof-of-concept on underpowered machines (like a local laptop) | 2 CPU | 6 GB |
Recommended sizing per System Requirements | 2 CPU | 15 GB |
If the number of CPUs is later changed, the license could be invalid for the new configuration.
In this section, you will place files and adjust configurations necessary for building the Docker images.
appian-docker
.
appian-docker
is created inside a directory that is shared with Docker.appian
. Give the appian
user access to the appian-docker
directory.Appian_Docker_Tools.zip
into appian-docker
.appian-docker/build-files/installers
.mysql-connector-java-5.1.45.zip
. Copy mysql-connector-java-5.1.45-bin.jar
into appian-docker/build-files/installers
.appian-docker/
directory. Otherwise, the Docker images will be created with a default username and password.
build-files/appian-rdbms/Dockerfile
conf/mysql-db-setup.sql
build-files/build-conf/tomcatResources.xml
appian
user id that Appian in Docker will use to set permissions for its files and directories:
Windows: In appian-docker/docker-compose.yml
, under the base
service, uncomment the line containing args:
and the line containing APPIAN_USER_ID=
and set the APPIAN_USER_ID
value to 9999
. See the following example configuration:
1
2
3
4
5
6
7
8
base:
image: appian-base
build:
context: ./build-files
dockerfile: ./appian-base/Dockerfile
args: # For dev purposes, to uniquely identify this "args" from the others in this file
- APPIAN_USER_ID=9999
container_name: base
appian-docker
, run ./set-appian-uid-mac.sh
.appian-docker
, run ./set-appian-uid-linux.sh
.docker-compose build
from the appian-docker
directory you created in the steps above.We've now created the images necessary for running Appian in containers. Next, we will add the necessary configurations to run them.
In this section, you will set up and configure files necessary for starting up the Docker containers.
appian-docker
directory, run one of the following commands:
set-up-initial-data.bat
./set-up-initial-data-linux.sh
./set-up-initial-data-mac.sh
service-manager
and data-server
containers for use in the docker-compose.yml
and appian-topology.xml
files. If you already have Appian license files (k3.lic
and k4.lic
) tied to certain FQDNs, use the same FQDNs for the service-manager
and data-server
containers.
service-manager
container FQDN is engines.example.com
.data-server
container FQDN is dataserver.example.com
.search-server
container in the appian-topology.xml
file. A license is not required for this container. In the example appian-topology.xml
file, the hostname for this container is search-server
.
The FQDN is made up of the hostname and the domain. In the example of the service-manager
container, the FQDN is engines.example.com
, the hostname is engines
, and the domain is example.com
.
appian-docker/docker-compose.yml
and uncomment the 'hostname' lines, setting the desired unique FQDNs for the corresponding containers.
Update hostname
for the service-manager
container to be the FQDN you've chosen for the service-manager
container. See the following example configuration:
1
2
container_name: service-manager
hostname: engines.example.com
Update hostname
for the data-server
container to be the FQDN you've chosen for the data-server
container. See the following example configuration:
1
2
container_name: data-server
hostname: dataserver.example.com
Open appian-docker/docker-compose.yml
and update links:
for the web-application
container to be the hostname you've chosen for the service-manager
container. See the following example configuration:
1
2
3
container_name: web-application
links:
- "service-manager:engines"
Open appian-docker/docker-compose.yml
and update links:
for the data-server
container to be the hostname you've chosen for the service-manager
container. See the following example configuration:
1
2
3
4
container_name: data-server
hostname: dataserver.example.com
links:
- "service-manager:engines"
appian-docker/conf/appian-topology.xml
to correlate the Appian services with the containers.
server host
to the hostname of the service-manager
container. For example <server host="engines">
.search-server host
to the hostname of the search-server
container. For example <search-server host="search-server" port="9301"/>
.broker host
to the hostname of the service-manager
container. For example <broker host="engines" port="9092"/>
.zookeeper host
to the hostname of the service-manager
container. For example <zookeeper host="engines" port="2181"/>
.data-server host
to the hostname of the data-server
container. For example <data-server host="dataserver" port="5400" rts-count="2"/>
.passwords.properties
and custom.properties
and save the files in the appian-docker/conf/
directory. See Post-Install Configurations for details on properties that must be set in these files.
passwords.properties
file is intended to be used once, and deleted during the initial startup. Create a backup copy of this file if you ever need to perform a clean installation with no previous data.data-server-sec.properties
file to secure the data server by following these instructions. Make sure the file is copied to the appian-docker/conf
and appian-docker/data-server/conf
directories.Appian will not start unless the data-server-sec.properties
has been created and copied to all of the required locations.
Appian restricts communications between the engine servers and the application server(s) using a security token and a secure license. A default security token is provided with Appian Docker Tools, but it is strongly recommended that you generate a unique token. Use the path appian-docker/conf/
instead of <APPIAN_HOME>/conf/
.
Appian requires two k licenses to run. In this section you will ensure that the proper k licenses are in the correct locations.
If you have these permanent licenses, skip to the next step. Otherwise, follow the steps below to request the k3.lic
and k4.lic
Appian licenses.
docker-compose up service-manager
. Copy the output text to a notepad.docker-compose up data-server
. Copy the output text to a notepad.docker-compose down
.service-manager
by following the steps in How to Request and Install Appian Product License Files.data-server
by following the step in the above document.k3.lic
and k4.lic
from appian-docker/conf/service-manager-licenses/
and appian-docker/conf/data-server-licenses/
.k3.lic
file from the service-manager
request (or your existing k3.lic
) into appian-docker/conf/service-manager-licenses
.k4.lic
file from the data-server
request (or your existing k4.lic
) into appian-docker/conf/data-server-licenses
.appian-docker/docker-compose.yml
file to use the license files:
k3.lic
license, uncomment - ./conf/service-manager-licenses/k3.lic:${APPIAN_HOME}/server/_bin/k/linux64/k3.lic
.k4.lic
license, uncomment - ./conf/data-server-licenses/k4.lic:${APPIAN_HOME}/data-server/engine/bin/q/l64/k4.lic
.Now you are ready to start your containers!
appian-docker
directory, run docker-compose up -d
.
docker-compose logs -f <CONTAINER_NAME>
org.apache.catalina.startup.Catalina.start Server startup in
…docker-compose down
To operate with an optional web server, follow the configuration steps in the following section. This can be useful if you want to run Appian using the https
scheme.
Congratulations! You have successfully implemented Appian in Docker!