Skip to main content
rebecca55213054
Participant
July 29, 2026
Open for Voting

I want to be able to use a VS Code devcontainer with Adobe ColdFusion Builder extension (and share that container with others). I don't want to have to do any manual setup if I have a properly set up devcontainer.

  • July 29, 2026
  • 0 replies
  • 2 views

I worked for quite some time to try to create a devcontainer setup that would:

 

  1. Allow me to use code completion and linting
  2. Allow me to use linting
  3. Allow me to use the Security Analyzer.


The first two are easy. You need a specific environment, but you don’t need to set up a server or a project. The Security Analyzer appears to require:
 

  1. A specific environment
  2. A server
  3. RDS, with an account.
  4. A project. Setting up a project within a devcontainer is deeply unpleasant. You have container within a container, and it appears to require you to use a VS Code project, as well as the extension’s own project files. I tend to avoid using VS Code Workspaces with devcontainers in general, because I run into conflicts between the two.

I got a far as the setup below. With this and a bunch of manual setup, I think I could possibly arrive at an environment where the Security Analyzer would work, but it would be a lot of labor, and very finicky. 

I want something I can hand off to another developer, and the only thing I have to explain is how to build a devcontainer.
 

.devcontainers/devcontainer.json:

{
"name": "${localWorkspaceFolderBasename} ColdFusion workspace",
"dockerComposeFile": "docker-compose.yml",
"service": "cfml-with-db",
"workspaceFolder": "/app",
"customizations": {
"vscode": {
"extensions": [
"com-adobe-coldfusion.adobe-cfml-lsp"
],
"settings": {
"files.associations": {
"*.cfm": "cfml",
"*.cfc": "cfml"
}
}
}
}
}

.devcontainers/settings/.cf-env

password=CHANGE_ME_CHANGE_ME_CHANGE_ME_CHANGE_ME
INSTALLER_UI=SILENT
SILENT_ENABLE_RDS=true
installModules=debugger

.devcontainers/settings/cf-settings.json

{
"USER": {
"user1": {
"password": "this_password_will_not_work_it_must_be_reset",
"datasources": [],
"isLdap": false,
"roles": [
"coldfusion.rds"
],
"description": "",
"isGroup": false,
"sandboxes": [],
"exposedServices": [],
"isSaml": false,
"username": "devuser"
}
},

"SECURITY": {
"adminAuthType": "SINGLEUSER",
"allowconcurrentadminlogin": true,
"allowedAdminIPList": [],
"externalAuth": "NONE",
"rds.enabled": true,
"rdsAuthType": "MULTIUSER",
"secureprofile.enabled": false
}
}

.devcontainers/docker-composer.yml

networks:
main:

services:
cfml-with-db:
build:
context: .
dockerfile: Dockerfile
container_name: ${WORKSPACE_NAME}-cfml-with-db
networks: [ main ]
volumes:
- type: bind
source: ../project
target: /app/project
- type: bind
source: ./settings/cf-settings.json
target: /app/settings/cf-settings.json
ports:
- "127.0.0.1:8501:8500"
- "127.0.0.1:5006:5005"
env_file:
- ./settings/.cf-env
environment:
acceptEULA: "YES"
importCFSettings: "/app/settings/cf-settings.json"

.devcontainers/Dockerfile

FROM adobecoldfusion/coldfusion2025:2025.0.4

# Switch to root if necessary to install packages
USER root

# Install Java 17 for the CFML extension
RUN apt-get update && apt-get install -y openjdk-17-jdk
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV PATH="$JAVA_HOME/bin:$PATH"