> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.itential.com/itential-platform/2023-2/plan/architecture/deploy-containers/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.itential.com/_mcp/server. # Deploy with containers > Run Itential Platform 6 as a Docker container using Itential-provided images. Itential provides pre-built OCI-compliant images of Platform 6 hosted on the Itential Docker registry. Containers are well-suited for development environments and teams using Docker-based workflows. Containerization offers the following advantages over a traditional server deployment: | Benefit | Description | | --------------------- | ----------------------------------------------------------------------------------------- | | Horizontal scaling | Additional Platform containers can be created and destroyed according to workload demands | | Deployment automation | Containers can be deployed dynamically without manual intervention | | Fault tolerance | Containers can substitute for one another in the event of a failure | | Blue-green deployment | Environment upgrades can be completed with minimal production downtime | | Hybrid deployments | Platform containers integrate with both on-premise and cloud-based resources | This guide covers Docker. Detailed instructions for Docker Compose and Kubernetes fall outside its scope. Example Docker Compose files are available in the [Itential open source repository](https://gitlab.com/itentialopensource/itential-containers-docker-compose-examples). ## Before you begin ### Container runtime Platform images are compliant with [Open Container Initiative (OCI)](https://opencontainers.org/) specifications. This guide assumes Docker as the container runtime. ### Registry access Platform images are hosted on the Itential Docker registry. Contact your Itential Account Manager to obtain: * Access key ID * Secret access key * Bundle name ### AWS CLI The [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/) must be installed on your host OS to authenticate with the Itential registry. ## Log in to the registry Authenticate with the Itential Docker registry before pulling or running images. ```bash export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= aws ecr get-login-password --region us-east-2 \ | docker login --username AWS --password-stdin 497639811223.dkr.ecr.us-east-2.amazonaws.com ``` Replace `` and `` with the credentials provided by your Itential Account Manager. ## Pull a Platform image ```bash docker pull 497639811223.dkr.ecr.us-east-2.amazonaws.com/: ``` Replace `` with your bundle name and `` with the desired Platform version, for example `6.0.2`. Referencing a feature release tag such as `6.0.0` pulls the latest maintenance build of that version, which may change over time. In production environments, always pin to a specific maintenance release tag such as `6.0.2`. ## Start a container The minimum required configuration is an encryption key. Pass it using the `-e` flag. ```bash docker run -d -p 3000:3000 -p 3443:3443 \ -e ITENTIAL_ENCRYPTION_KEY="" \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/: ``` For information on generating an encryption key, see [Install Platform 6](/itential-platform/install/platform). ## Configure with environment variables All Platform configuration properties can be set using environment variables with the `ITENTIAL_` prefix. Pass each variable using the `-e` flag. ```bash docker run -d -p 3000:3000 -p 3443:3443 \ -e ITENTIAL_SERVER_ID="server1" \ -e ITENTIAL_ENCRYPTION_KEY="" \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/: ``` For the full list of available properties and their environment variable equivalents, see [Platform properties reference](/itential-platform/configure/environment-variables-properties-reference). ### Generate an encrypted value To generate an encrypted value from inside the container — for example, to store a password in encrypted form — run: ```bash docker run -it --entrypoint node \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/automation-platform-: \ /opt/itential/platform/server/utils/encrypt.js ``` Replace `` with the plaintext value to encrypt. ## Common configuration tasks ### Persist logs to the host By default, container logs are lost when a container and its volumes are removed. To persist logs, mount a host directory into the container. #### Create a log directory on the host ```bash mkdir -p ./itential/platform/logs ``` #### Mount the directory when starting the container The default log directory inside the container is `/var/log/itential/platform`. You can change this with the `ITENTIAL_LOG_DIRECTORY` environment variable. ```bash docker run -d -p 3000:3000 -p 3443:3443 \ -e ITENTIAL_ENCRYPTION_KEY="" \ --mount type=bind,source=./itential/platform/logs,target=/var/log/itential/platform \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/: ``` ### Add SSH keys and certificates #### Create a keys directory and place your files in it ```bash mkdir -p ./itential/platform/keys ``` #### Set permissions on each key and certificate Keys and certificates must be readable only by the file owner. ```bash chmod 0400 custom_key.key chmod 0400 custom_key.cert ``` #### Mount the directory and pass the file paths as environment variables ```bash docker run -d -p 3000:3000 -p 3443:3443 \ --mount type=bind,source=./itential/platform/keys,target=/opt/itential/platform/keys \ -e ITENTIAL_ENCRYPTION_KEY="" \ -e ITENTIAL_WEBSERVER_HTTPS_CERT="/opt/itential/platform/keys/custom_key.cert" \ -e ITENTIAL_WEBSERVER_HTTPS_KEY="/opt/itential/platform/keys/custom_key.key" \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/: ``` ### Add adapters and custom applications #### Create a directory and install the adapter ```bash mkdir -p ./itential/platform/custom_adapters_apps/@itentialopensource cd ./itential/platform/custom_adapters_apps/@itentialopensource # Clone the adapter, then install its dependencies cd open_source_adapter npm install --install-strategy=nested --prod ``` #### Mount the directory and set the service directory environment variable ```bash docker run -d -p 3000:3000 -p 3443:3443 \ -e ITENTIAL_ENCRYPTION_KEY="" \ -e ITENTIAL_SERVICE_DIRECTORY="/opt/itential/platform/custom" \ --mount type=bind,source=./itential/platform/custom_adapters_apps/@itentialopensource,target=/opt/itential/platform/custom \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/: ``` ### Run multiple containers for high availability Multiple Platform containers can run together to provide high availability. Each container must: * Be bound to a unique host port * Connect to the same MongoDB and Redis instance The following example starts two Platform containers sharing external MongoDB and Redis: ```bash # Container 1 docker run -d \ -p 3000:3000 -p 3443:3443 \ -e ITENTIAL_ENCRYPTION_KEY="" \ -e ITENTIAL_MONGO_URL="mongodb://host.docker.internal:27017" \ -e ITENTIAL_REDIS_HOST="host.docker.internal" \ --name IAP_instance1 \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/: # Container 2 docker run -d \ -p 3001:3000 -p 3444:3443 \ -e ITENTIAL_ENCRYPTION_KEY="" \ -e ITENTIAL_MONGO_URL="mongodb://host.docker.internal:27017" \ -e ITENTIAL_REDIS_HOST="host.docker.internal" \ --name IAP_instance2 \ 497639811223.dkr.ecr.us-east-2.amazonaws.com/: ``` ## Related reading * [Deployment overview](/itential-platform/plan/architecture/overview) * [Deploy with Kubernetes](/itential-platform/plan/architecture/deploy-kubernetes) * [Platform properties reference](/itential-platform/configure/environment-variables-properties-reference) * [Configuration](/itential-platform/configure/platform) * [Docker Compose examples](https://gitlab.com/itentialopensource/itential-containers-docker-compose-examples) > Run Itential Platform 6 as a Docker container using Itential-provided images.