Docker
Docker
Guide on running Lucee with Docker.
Benefits
- Consistency: Lucee and dependencies packaged together - works the same everywhere
- Scalability: Lightweight containers scale quickly based on demand
- Resource Efficiency: Containers share host kernel - better performance than VMs
- Isolation: No conflicts between applications on same host
Lucee Docker Images
Official images are built on Tomcat. Extend them for your own apps:
FROM lucee/lucee:latest
COPY config/lucee/ /opt/lucee/web/
COPY www /var/www
More examples: Lucee Docker examples repository.
Using Lucee Docker Images
Available on Docker Hub.
Pull
docker pull lucee/lucee:latest
Run
docker run -d -p 8888:8888 lucee/lucee:latest
Runs detached, mapping container port 8888 to host port 8888.
Docker Compose
Example with Nginx reverse proxy:
version: "3"
services:
lucee:
image: lucee/lucee:latest
ports:
- "8888:8888"
volumes:
- ./www:/var/www
- ./config/lucee:/opt/lucee/web
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- lucee
Defines two services: lucee runs the server, nginx runs as reverse proxy.
LUCEE_BUILD Environment Variable
Set LUCEE_BUILD=true to prewarm Lucee during image build - loads configurations and prepares for deployment. The onBuild function in Server.cfc runs during this phase for setup tasks (validating configs, copying files, compiling/encrypting source).
Example Dockerfile
FROM lucee/lucee:latest
# Copy your Server.cfc into the appropriate directory
COPY Server.cfc /opt/lucee-server/context/context/Server.cfc
# Set the environment variable to trigger onBuild
ENV LUCEE_BUILD=true
# Expose necessary ports
EXPOSE 8888
# Start Lucee server
COPY supporting/prewarm.sh /usr/local/tomcat/bin/
RUN chmod +x /usr/local/tomcat/bin/prewarm.sh
RUN /usr/local/tomcat/bin/prewarm.sh 6.1
Get prewarm.sh from lucee-dockerfiles.
Example Server.cfc
// lucee-server\context\context\Server.cfc
component {
public function onBuild() {
systemOutput("------- Building Lucee (Docker) -----", true);
}
}
Redirecting Logs to Docker Console
Since Lucee 6.2, redirect logs to Docker console:
ENV LUCEE_LOGGING_FORCE_APPENDER=console
ENV LUCEE_LOGGING_FORCE_LEVEL=info
Or use symlinks:
RUN ln -sf /proc/1/fd/1 /opt/lucee/server/lucee-server/context/logs/application.log \
&& ln -sf /proc/1/fd/1 /opt/lucee/server/lucee-server/context/logs/deploy.log \
&& ln -sf /proc/1/fd/1 /opt/lucee/server/lucee-server/context/logs/exception.log
Or configure via Lucee Admin (Settings > Logging) and select Console appender.
Performance Tips
Avoid configuring directories under lucee-server as docker volumes - the host filesystem overhead causes performance problems.