Use the below command to bring up the ColdFusion container in daemon mode with Admin password set as ‘ColdFusion123’ and to serialize ColdFusion image with a given serial number.
We have hosted the Docker images in Amazon ECR and Docker Hub. You can load the images in your local environment using the command below:
- docker pull public.ecr.aws/adobe/coldfusion:latest
Once the image is available in your local system, you can then run the Docker commands. The name of the image will follow the tag conventions, which are listed below:
- ColdFusion (2021 release): latest-2021
- ColdFusion (2023 release): latest
ColdFusion EULA
Before proceeding, it is mandatory that you read the EULA.
The EULA must be accepted, via an environment variable, acceptEULA, while running the container.
Environment Variables supported with ColdFusion (2021 release)
For a list of environment variables (see section below) for this image, enter:
docker run --rm -it adobecoldfusion/coldfusion:latest help
Supported commands: help, start, info, cli <.cfm>
Webroot: /app
CAR imports: CAR files present in /data will be automatically imported during startup.
Required ENV Variables: acceptEULA=YES Optional ENV variables: serial=<ColdFusion Serial Key> previousSerial=<ColdFusion Previous Serial Key (Upgrade)> password=<Password> enableSecureProfile=<true/false(default)> configureExternalSessions=<true/false(default)> externalSessionsHost=<Redis Host (Default:localhost)> externalSessionsPort=<Redis Port (Default:6379)> externalSessionsPassword=<Redis Password (Default:Empty)> configureExternalAddons=<true/false(default)> addonsHost=<Addon Container Host (Default: localhost)> addonsPort=<Addon Container Port (Default: 8993)> addonsUsername=<Solr username (Default: admin)> addonsPassword=<Solr password (Default: admin)> addonsPDFServiceName=<PDF Service Name (Default: addonsContainer)> addonsPDFSSL=<true/false(default)> setupScript=<CFM page to be invoked on startup. Must be present in the webroot, /app> setupScriptDelete=<true/false(default) Auto delete setupScript post execution> language=<ja/en (Default: en)> installModules=<Comma delimited list of modules to be installed by CF Package Manager,accepts 'all' for installing all the available packages> importCFSettings=<A JSON file containing the CF Settings to be imported . Must be present in the webroot, /app> importCFSettingsPassphrase=<Passphrase to import CF settings from an encrypted JSON file.> importModules=<A text file containing packages to be imported. Must be present in the webroot, /app>
Usage
-
By default, Administrator and Admin API modules are installed in the ColdFusion images for CF2021 and above. To install /import modules in an image use the environment variable installModules/importModules. You can also import ColdFusion settings from a json file using the environment variable importCFSettings.
Run the command below to create a container that imports the ColdFusion settings from config.json and installs, for example, the modules scheduler and cfmongodb:
docker container run -dt -p 8500:8500 -v /opt/mywebroot:/app -e acceptEULA=YES -e password=ColdFusion123 -e importCFSettings=config.json -e installModules=scheduler,cfmongodb coldFusion:2021.0.1
-
By default, the ColdFusion 2021 and above image's deployment type and profile are Development. To change the profile and deployment type, use the environment variables ‘deploymenType’ and ‘profile’.
You can also set the allowed Ip List for ColdFusion Admin using the environment variable ‘allowedAdminIPList’. The IP List is set only when the profile is “Production Secure”.
docker container run -dt -p 8535:8500 -e acceptEULA=YES -e password=ColdFusion123 -e deploymentType=Production -e profile=”Production Secure” -e serial=<serialnumber> -e allowedAdminIPList=*.*.*.*,0.0.0.0 public.ecr.aws/adobe/coldfusion:latest
-
To run a CFM page /application that is outside the container, you need to map a volume to /app directory of the container. The webroot is reconfigured to point to the directory, /app. Run a CFM page test.cfm , present in /opt/mywebroot via CLI.
docker run --rm -it -e acceptEULA=YES –v /opt/mywebroot:/app adobecoldfusion/coldfusion2021:latest cli test.cfm
-
For importing configurations using CAR, the CAR archives mounted to the /data directory are automatically imported during startup. Use the following command to import CAR data.car present in opt/source:
docker container run -dt -p 8520:8500 -v /opt/source/:/data -v /opt/mywebroot/:/app -e acceptEULA=YES aobecoldfusion/coldfusion2021:2021.0.2
ENVIRONMENT VARIABLES
You will have a docker image in your system tagged as ColdFusion:2023.0.1
The docker image accepts the following environment variables:
- installModules: A comma delimited list of modules to be installed by ColdFusion Package Manager,accepts 'all' for installing all the available packages.
- importCFSettings: A JSON file containing the ColdFusion Settings to be imported . Must be present in the webroot, /app.
- importCFSettingsPassphrase: Passphrase to import ColdFusion settings from an encrypted JSON file.
- importModules: A text file containing packages to be imported. Must be present in the webroot, /app. CFPM has an option to export packages installed in a ColdFusion instance . The exported packages are listed in a text file and that text file can be used to import packages in any instance. This is supported using the environment variable importModules.
- setDeploymentType: Set the deployment type of ColdFusion. By default, the type is 'Development'. The other possible values are - Production, Staging, Testing, or Disaster Recovery.
- setProfile: Set the ColdFusion profile. By default, the profile is 'Development'. The other possible values are - Production, Production Secure.
- allowedAdminIPList: Specify the list of IP addresses allowed to access ColdFusion Administrator. You can set the value only when the ColdFusion profile is Production Secure.
Environment Variables supported with ColdFusion
For a list of environment variables for this image, enter:
docker run --rm -it adobecoldfusion/coldfusion:latest-2023 help
Supported commands: help, start, info, cli <.cfm>
Webroot: /app
CAR imports: CAR files present in /data will be automatically imported during startup.
Required ENV Variables: acceptEULA=YES Optional ENV variables: serial=<ColdFusion Serial Key> previousSerial=<ColdFusion Previous Serial Key (Upgrade)> password=<Password> enableSecureProfile=<true/false(default)> configureExternalSessions=<true/false(default)> externalSessionsHost=<Redis Host (Default:localhost)> externalSessionsPort=<Redis Port (Default:6379)> externalSessionsPassword=<Redis Password (Default:Empty)> configureExternalAddons=<true/false(default)> addonsHost=<Addon Container Host (Default: localhost)> addonsPort=<Addon Container Port (Default: 8989)> addonsUsername=<Solr username (Default: admin)> addonsPassword=<Solr password (Default: admin)> addonsPDFServiceName=<PDF Service Name (Default: addonsContainer)> addonsPDFSSL=<true/false(default)> setupScript=<CFM page to be invoked on startup. Must be present in the webroot, /app> setupScriptDelete=<true/false(default) Auto delete setupScript post execution> language=<ja/en (Default: en)>
Useful Docker Commands
To view a list of all running or stopped containers, enter:
docker ps -a
To check the status of the container, enter:
docker logs <containerID / containerName>
To stop a container, enter:
docker stop <containerID / containerName>
To remove a container, enter:
docker rm <container ID/ containerName>
Frequently Asked Questions
Extend ColdFusion base image
In this scenario, we shall extend the ColdFusion base image to register a MySQL driver, so that we can create a MySQL datasource using ColdFusion’s Admin API.
Dockerfile
FROM coldfusion:latest COPY mysql-connector-java-commercial-8.0.11-bin.jar /opt/coldfusion/cfusion/lib
The file, mysql-connector-java-commercial-8.0.11-bin.jar, must be present in the current working directory.
In the webroot, create a cfm that uses ColdFusion’s Admin API to create a datasource. Let’s call the CFM page, setupColdFusion.cfm. Place the file in the mounted webroot volume.
<cfscript> // Login is always required. This example uses two lines of code. adminObj = createObject("component","CFIDE.adminapi.administrator"); adminObj.login("ColdFusion123"); //CF Admin password // Create a MySQL datasource datasource = createObject("component", "CFIDE.adminapi.datasource"); datasource.setMySQL5("SampleMYSqlDB", "database-host", "testDB"); </cfscript>
To build and bring up a container based on this image, run Docker compose. A Docker compose file is a tool for defining and running applications in a Docker container.
Create a docker-compose.yml file with the following content outside the directory that contains the above DockerFile and setupColdFusion.cfm. The directory that contains the above files must be named ‘app’.
Docker-compose.yml
version: "3" services: coldfusion: container_name: myapp build: context: ./app dockerfile: Dockerfile image: app depends_on: - redis - addons ports: - "8500:8500" volumes: - "/opt/wwwroot:/app" env_file: - coldfusion.env healthcheck: test: curl -f http://addons:8989/solr/ || exit 1 interval: 1m timeout: 3s deploy: mode: replicated replicas: 2 restart_policy: condition: on-failure update_config: parallelism: 1 delay: 10s networks: - webnet addons: container_name: mycfaddons image: addons environment: - acceptEULA=YES ports: - "8989:8989" networks: - webnet redis: container_name: myredis image: redis:latest ports: - "6381:6379" volumes: - "redis_data:/data" networks: - webnet volumes: redis_data: networks: webnet:
coldfusion.env
acceptEULA=YES password=ColdFusion123
To run Docker compose, enter the following command:
docker-compose up -d
The ColdFusionpage, setupColdFusion.cfm is executed on container starts up, since the environment variable, ‘setupScript’ is configured appropriately.
You can access the administrator to ensure that the MySQL datasource is configured correctly.
ColdFusion Add-ons
Run the image
The ColdFusion (2023 release) add-ons image (for Solr and PDFg/CFHTMLtoPDF) are hosted in this location for ECR and Docker Hub.
You can pull the latest docker images of ColdFusion Addons from AWS (Amazon Web Services) ECR in your local environment using the following commands:
docker pull public.ecr.aws/adobe/coldfusionaddons:latest
docker pull public.ecr.aws/adobe/coldfusionaddons:latest-2023
docker pull public.ecr.aws/adobe/coldfusionaddons2023:2023.0.7 (ColdFusion 2023 Addons Update 7)
docker pull public.ecr.aws/adobe/coldfusionaddons2023:latest
The equivalent commands to pull the latest docker images of ColdFusion Addons from Docker Hub are:
docker pull adobecoldfusion/coldfusionaddons:latest (ColdFusion Addons 2023 Update 7)
docker pull adobecoldfusion/coldfusionaddons:latest-2023
docker pull adobecoldfusion/coldfusionaddons2023:2023.0.7
docker pull adobecoldfusion/coldfusionaddons2023:latest
To pull the latest image of ColdFusion Addons (2023 release) from AWS ECR in your local environment, use the following commands:
docker pull public.ecr.aws/adobe/coldfusionaddons:latest-2023
docker pull public.ecr.aws/adobe/coldfusionaddons2023:latest
To pull the latest image of ColdFusion Addons (2023 release) from Docker Hub in your local environment use the following commands:
docker pull adobecoldfusion/coldfusionaddons:latest-2023
docker pull adobecoldfusion/coldfusionaddons2023:latest (ColdFusion 2023 Update 7)
docker run <product>:<version>
ENVIRONMENT VARIABLES SUPPORTED
To get the list of environment variables for this image, use the following command ,
ECR:
docker run --rm -it public.ecr.aws/adobe/coldfusionaddons:latest help
Docker Hub:
docker run --rm -it adobecoldfusion/coldfusionaddons2021:latest help
Supported commands: help, start <.cfm>
Required ENV Variables:
acceptEULA=YES
Optional ENV Variables:
solrUsername=<SOLR-USERNAME>
solrPassword=<SOLR-PASSWORD>
Environment variables
acceptEULA=YES solrUsername=<SOLR-USERNAME> solrPassword=<SOLR-PASSWORD> setupScript=setupColdFusion.cfm enableSecureProfile=true configureExternalSessions=true externalSessionsHost=redis externalSessionsPort=6379 configureExternalAddons=true addonsHost=addons addonsPort=8989 addonsUsername=admin addonsPassword=admin addonsPDFServiceName=addonsContainer addonsPDFSSL=false
Usage
ECR:
docker run -dt -p 8993:8995 -e acceptEULA=YES public.ecr.aws/adobe/coldfusionaddons:latest start
docker run -dt -p 8991:8995 -e acceptEULA=YES public.ecr.aws/adobe/coldfusionaddons:latest-2023 start
Docker Hub:
docker run -dt -p 8994:8995 -e acceptEULA=YES -e solrUsername=admin -e solrPassword=admin adobecoldfusion/coldfusionaddons:latest
docker run -dt -p 8990:8995 -e acceptEULA=YES -e solrUsername=admin -e solrPassword=admin adobecoldfusion/coldfusionaddons2023:latest start
Performance Monitoring Toolset
Run the following commands before you start a Performance Monitoring Toolset container:
- The maximum count of open files must be more than 65536. Use the command, ulimit -n 65536.
- The maximum count of maps must be more than 262144. To increase the limit, use the command, sysctl -w vm.max_map_count=262144.”
The Docker image for Performance Monitoring Toolset is available for ECR and Docker Hub.
Pull the image
The Docker image for Performance Monitoring Toolset(PMT) is available for ECR and Docker Hub.
You can pull the latest docker images of PMT from AWS (Amazon Web Services) ECR in your local environment using the following commands:
docker pull public.ecr.aws/adobe/pmt:latest (PMT 2021 Update 2)
docker pull public.ecr.aws/adobe/pmt:latest-2021 (PMT 2021 Update 2)
docker pull public.ecr.aws/adobe/pmt2021:2021.0.2 (PMT 2021 Update 2)
docker pull public.ecr.aws/adobe/pmt2021:latest (PMT 2021 Update 2)
The equivalent commands to pull the latest docker images of PMT from Docker Hub are:
docker pull adobecoldfusion /pmt:latest (PMT 2021 Update 2)
docker pull adobecoldfusion/ pmt:latest-2021 (PMT 2021 Update 2)
docker pull adobecoldfusion/ pmt2021:2021.0.2 (PMT 2021 Update 2)
docker pull adobecoldfusion/pmt2021:latest (PMT 2021 Update 2)
Environment variables
To get a list of environment variables in the image, use the command:
docker run --rm -it public.ecr.aws/adobe/pmt:latest help
docker run --rm -it adobecoldfusion/pmt:latest help
Supported commands: help, start
Required ENV Variables:
acceptEULA=YES
datastoreHost=<DATASTORE-HOSTNAME>
datastorePort=<DATASTORE-PORT>
Optional ENV Variables:
startPMT=<true/false; default:true>
startDatastore=<true/false; default:true>
dataStoreNodeName=<Name for identifying datastore node in a cluster. Default:not set>
dataStoreMaster=<true/false; default:true, can be set to false on datastore instances added to a cluster>
dataStoreNodes=["host1:port1", "host2:port2"]
Usage
To run the container with the EULA, use the command:
Docker Hub:
docker run -dt -p 9101:9101 -e acceptEULA=YES -e datastoreHost=<ElasticSearchHostName> -e datastorePort=<ElasticSearchPort> -e startDatastore=false adobecoldfusion/pmt:latest start
ECR:
docker run -dt -p 9101:9101 -e acceptEULA=YES -e datastoreHost=<ElasticSearchHostName> -e datastorePort=<ElasticSearchPort> -e startDatastore=false public.ecr.aws/adobe/pmt:latest-2023 start
Extend image
pmt.env
acceptEULA=YES datastoreHost=pmt datastorePort=9200 startDatastore=true
coldfusion.env
acceptEULA=YES password=ColdFusion123
docker-compose.yml
version: "3" services: coldfusion: container_name: coldfusion image: coldfusion:2023.0.7 ports: - "8500:8500" volumes: - "./webroot:/app" env_file: - coldfusion.env healthcheck: test: curl -f http://localhost:8500/ interval: 1m timeout: 3s networks: - webnet pmt: container_name: pmt image: docker run pmt:2023.0.0 depends_on: - coldfusion ports: - "9101:9101" env_file: - pmt.env healthcheck: test: curl -f http://localhost:9101/ interval: 1m timeout: 3s networks: - webnet networks: webnet:
There is also support for the environment variable, "password".
Example
docker run -d -p 9101:9101 -e acceptEULA=YES -e datastoreHost=10.42.70.250 -e datastorePort=9251 -e startDatastore=false -e password=Adobe123 pmt:latest
API Manager
The Docker image for ColdFusion API Manager(APIM) is available for ECR and Docker Hub.
You can pull the latest docker images of APIM from AWS (Amazon Web Services) ECR in your local environment using the following commands:
docker pull public.ecr.aws/adobe/apimanager:latest ( APIM 2021 )
docker pull public.ecr.aws/adobe/apimanager:latest-2021 (APIM 2021 )
docker pull public.ecr.aws/adobe/apimanager2021:2021.0.0 (APIM 2021)
docker pull public.ecr.aws/adobe/apimanager2021:latest (APIM 2021)
The equivalent commands to pull the latest docker images of PMT from Docker Hub are:
docker pull adobecoldfusion /apimanager:latest ( APIM 2021 )
docker pull adobecoldfusion/apimanager:latest-2021 (APIM 2021 )
docker pull adobecoldfusion/apimanager2021:2021.0.0 (APIM 2021)
docker pull adobecoldfusion/apimanager2021:latest (APIM 2021)
Environment Variables
To get a list of environment variables supported with this image, enter:
docker run --rm -it public.ecr.aws/adobe/apimanager:latest help
Supported commands: help, start <.cfm>
Required ENV Variables: apim_acceptEULA=YES Optional ENV Variables: apim_serial=<Serial Key> apim_previousSerial=<Previous Serial Key (Upgrade)> apim_password=<API Manager Admin Password> apim_datastoreHost=<Datastore Hostname> apim_datastorePort=<Datastore Port> apim_datastorePassword=<Redis (Datastore) Password> apim_datastoreSeed=<Datastore Encryption Seed> apim_analyticsHost=<Analytics Server Hostname> apim_analyticsPort=<Analytics Server Port> apim_analyticsClusterPort=<Analytics Server Cluster Port> apim_analyticsClusterName=<ElasticSearch Cluster Name>
Usage
ECR:
docker container run -dt -e acceptEULA=YES -e datastoreHost=<Datastore Hostname> -e datastorePort=<Datastore Port> -e analyticsHost=<Analytics Server Hostname> -e analyticsPort=<Analytics Server Port> -e analyticsClusterPort=<Analytics Server Cluster Port> -e analyticsClusterName=<ElasticSearch Cluster Name> public.ecr.aws/adobe/apimanager:latest
Docker Hub:
docker run -dt -p 8500:8500 -e acceptEULA=YES -e datastoreHost=<Hostname> -e datastorePort=6378 -e analyticsHost=10.42.70.250 -e analyticsPort=9201 -e analyticsClusterPort=<Cluster Port> -e analyticsClusterName=<ElasticSearch Cluster Name> apimanager:latest
Extend APIM Base Image
docker-compose.yml
version: "3" services: analytics: container_name: analytics image: public.ecr.aws/adobe/apimanageraddons:latest env_file: - analytics.env networks: - webnet datastore: container_name: datastore image: public.ecr.aws/adobe/apimanageraddons:latest env_file: - datastore.env networks: - webnet ports: - "9200:9200" - "9300:9300" apim: container_name: apimanager image: public.ecr.aws/adobe/apimanager:latest ports: - "9000:9000" env_file: - apimanager.env networks: - webnet depends_on: - datastore networks: webnet:
apimanager.env
acceptEULA=YES serial=<enter serial number> apimPassword=APIManager123 datastoreHost=datastore datastorePort=6379 datastorePassword=MyRedisPassword analyticsHost=analytics analyticsPort=9200 analyticsClusterPort=9300 analyticsClusterName=groot-analytics
analytics.env
acceptEULA=YES startAnalyticsService=true analyticsClusterName=groot-analytics
datastore.env
acceptEULA=YES startDatastoreService=true datastorePassword=MyRedisPassword