Control Center Docker Image
This page describes how to run Control Center with Docker.
GridGain provides two docker images: Control Center Frontend and Control Center Backend. The easiest way to start Control Center in Docker is to use docker-compose, which enables you to start multi-container applications with a single configuration file.
Prerequisites
-
Docker and Docker compose
Compose File
Docker Compose needs a configuration files that defines an application. In our case, the application consists of two containers: Control Center Backend and Control Center Frontend. The frontend uses nginx to redirect user requests and, therefore, needs an nginx configuration file.
The docker-compose file must define the following actions:
-
Pull docker images for Control Center Frontend and Control Center Backend:
docker image pull gridgain/control-center-frontend:2024.4 docker image pull gridgain/control-center-backend:2024.4
-
Mount nginx configuration file
control-center.conf
, which is used by the frontend to handle user requests (see below for a sample nginx configuration file).control-center.confupstream backend-endpoint { server control-center-backend:3000; } server { listen 8008; server_name _; set $ignite_console_dir /data/www; root $ignite_console_dir; error_page 500 502 503 504 /50x.html; location / { try_files $uri /index.html = 404; } location /api/v1 { proxy_pass http://backend-endpoint; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass_header X-XSRF-TOKEN; } location /agents { proxy_pass http://backend-endpoint; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Origin http://backend-endpoint; } location /browsers { proxy_pass http://backend-endpoint; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Origin http://backend-endpoint; proxy_pass_header X-XSRF-TOKEN; } location = /50x.html { root $ignite_console_dir/error_page; } }
-
Set configuration parameters via environment variables.
-
Start the backend and frontend containers and bind the frontend to port
8008
.docker compose up -d
Following is an example docker-compose file:
version: '3'
services:
backend:
image: gridgain/control-center-backend:2024.4
container_name: control-center-backend
# Restart on crash.
restart: on-failure
environment:
# Java settings
- JVM_OPTS=
frontend:
image: gridgain/control-center-frontend:2024.4
container_name: control-center-frontend
depends_on:
- backend
volumes:
- ${PWD}/control-center.conf:/etc/nginx/control-center.conf
ports:
# Proxy HTTP Nginx port (HOST_PORT:DOCKER_PORT)
- 8008:8008
Optionally, to introduce a custom ignite-config.xml
file, mount the config map as follows:
services:
backend:
image: gridgain/control-center-backend:{version}
container_name: control-center-backend
# Restart on crash.
restart: on-failure
environment:
# Java settings
- JVM_OPTS=
volumes:
- ${PWD}/ignite-config.xml:/opt/gridgain-control-center/ignite-config.xml
Launching Control Center
Put docker-compose.yaml
and control-center.conf
into a directory and run the following command in that directory:
docker compose up -d
The command starts two containers and binds the frontend container to port 8008
.
Run the following command to verify that the containers launched successfully:
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------
control-center-backend /bin/sh -c ./control-center.sh Up 3000/tcp
control-center-frontend nginx -g daemon off; Up 80/tcp, 8008/tcp, 0.0.0.0:8008->8008/tcp
In the above example, Control Center is running on port 8008
.
You have to launch Control Center from the admin account, which needs to be created:
-
Navigate to the Control Center backlog and find the "admin account" link:
-
Copy the link to your browser. Replace
3000
with8008
and follows the link. -
In the Control Center UI that appears, sign in the admin account and add the Control Center license.
The cluster will try to connect to the default Control Center URI (http://localhost:3000
), which is the expected behavior.
You can change the Control Center port using the management script:
{GRIDGAIN_HOME}/bin/management.sh --uri http://localhost:8008
See Control Center URI for details.
Configuration Parameters
You can set Control Center configuration parameters by providing environment variables in the docker-compose.yaml
file.
For a complete list of parameters, see Configuration Parameters.
How to Add HTTPS to Control Center in Docker
To add HTTPS to Control Center, you need to prepare your the docker-compose file and nginx configuration for it to use:
-
Create a
docker-compose.yaml
file that uses certificate files:version: '3' services: backend: image: gridgain/control-center-backend:2024.4 container_name: control-center-backend # Restart on crash. restart: on-failure environment: - JVM_OPTS= volumes: - ${PWD}/work:/opt/gridgain-control-center/work frontend: image: gridgain/control-center-frontend:2024.4 container_name: control-center-frontend depends_on: - backend volumes: - ${PWD}/control-center.conf:/etc/nginx/control-center.conf - ${PWD}/server.crt:/etc/nginx/server.crt - ${PWD}/server.nopass.key:/etc/nginx/server.nopass.key ports: # Proxy HTTP Nginx port (HOST_PORT:DOCKER_PORT) - 80:8008 - 443:8443
-
Create a
control-center.conf
nginx configuration file with the following content:upstream backend-endpoint { server backend:3000; } server { listen 8008 default_server; listen [::]:8008 default_server; server_name _; return 301 https://$host$request_uri; } server { listen 8443 ssl; server_name _; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.nopass.key; # Enable Mutual SSL if disabled https will be used. #ssl_verify_client on; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; set $ignite_console_dir /data/www; root $ignite_console_dir; error_page 500 502 503 504 /50x.html; location / { try_files $uri /index.html = 404; } location /api/v1 { proxy_pass http://backend-endpoint; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass_header X-XSRF-TOKEN; } location /browsers { proxy_pass http://backend-endpoint; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Origin http://backend-endpoint; proxy_pass_header X-XSRF-TOKEN; } location /agents { proxy_pass http://backend-endpoint; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Origin http://backend-endpoint; } location = /50x.html { root $ignite_console_dir/error_page; } }
-
Generate your certificate files:
server.crt
andserver.key
. -
Start Control Center:
docker compose up
Upgrading from a Previous Control Center Version
To migrate data from an existing Control Center installation to a new version:
-
Mount the
work
directory for the old installation. -
Use the same work directory in the new Control Center version.
-
Do one of the following:
-
Add the following property to application.properties or application.yaml:
control.repositories.auto-migrate-enabled=true
-
Launch Control Center with the following JVM_OPTS environment variable:
-Dcontrol.repositories.auto-migrate-enabled=true
For example, you can launch it from the command line like this:
JVM_OPTS='-Dcontrol.repositories.auto-migrate-enabled=true' ./control-center.sh
-
Next Steps
-
Change Configuration Parameters - make sure you optimize the disk space utilization
-
Connect a GridGain cluster or an Apache Ignite cluster
© 2024 GridGain Systems, Inc. All Rights Reserved. Privacy Policy | Legal Notices. GridGain® is a registered trademark of GridGain Systems, Inc.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.