Docker Development Environment
Our Docker setup provides a consistent development environment for all team members.
Architecture
Prerequisites
- Docker Desktop installed and running
- Docker Compose installed
- At least 4GB of free RAM
Configuration
Directory Structure
docker/
├── backups/ # Gateway backups
├── data/ # Persistent gateway data
├── docker-compose.yml # Environment configuration
└── .env # Environment variables
Docker Compose Configuration
version: "3.8"
services:
gateway:
image: inductiveautomation/ignition:8.1.44
ports:
- "8088:8088" # HTTP
- "8043:8043" # HTTPS
volumes:
- ./data:/var/lib/ignition
- ./backups:/restore
- ../web:/web-resources
environment:
ACCEPT_IGNITION_EULA: "Y"
IGNITION_EDITION: "standard"
RESTORE_ON_STARTUP: "true"
GATEWAY_RESTORE_DISABLED: "false"
command: >
--
-Dres.path.dev.kgamble.perspective.examples.ExampleComponentLibrary=/web-resources/build/generated-resources/mounted
Usage
Starting the Environment
# Navigate to docker directory
cd docker
# Start containers
docker-compose up -d
# View logs
docker-compose logs -f
Stopping the Environment
docker-compose down
Accessing the Gateway
- Web Interface:
http://localhost:8088
- Gateway Admin:
http://localhost:8088/system/admin
- Designer: Launch through Gateway web interface
Volume Mounts
Web Resources
volumes:
- ../web:/web-resources
This mount enables hot reloading of web resources during development.
Ensure your user has appropriate permissions for mounted directories. On Linux/macOS:
chmod -R 777 data backups
Environment Variables
GATEWAY_ADMIN_USERNAME=admin
GATEWAY_ADMIN_PASSWORD=password
IGNITION_EDITION=standard
Designer Auto-Login
Auto-login should only be used for testing purposes and should not be used in a production environment.
It is possible to auto-login to the designer for testing purposes, however it is noted that this is not secure and should not be used in a production environment. To enable this, add the following JVM args to your designer launcher config for this gateway:
-Dautologin.username=some_username;-Dautologin.password=some_password;-Djavaws.ignition.loglevel=INFO;-Djavaws.ignition.debug=true;-Dproject.name=some_project_name;
Note that the entire value must be on one line, and to replace the username, password, and project name with your own values.
Common Issues
Port Conflicts
If ports 8088 or 8043 are in use:
- Stop conflicting services
- Modify port mappings in
docker-compose.yml
:ports:
- "8089:8088" # Map to different host port
Volume Mount Issues
If web resources aren't updating:
- Check volume mount permissions
- Verify Docker has access to the mounted directories
- Check Docker Desktop settings for file sharing
Best Practices
-
Gateway Backups
- Regularly update the backup in
docker/backups
- Include module configurations
- Document backup contents
- Regularly update the backup in
-
Resource Management
- Clean up unused containers:
docker system prune
- Monitor container logs
- Set appropriate resource limits
- Clean up unused containers:
-
Development Workflow
- Keep Docker environment running during development
- Use hot reload for rapid development
- Monitor resource usage