Skip to content

Service Types#

The below lists all service types that can be defined via lagoon.type within a docker-compose.yml file.

Warning

Once a lagoon.type is defined and the environment is deployed, changing it to a different type is not supported and could result in a broken environment.

Additional Volumes#

Some service types allow for additional volumes to be added, for more information on the lagoon.volumes.X.path label, please see Additional Volumes

If a service type does not include the lagoon.volumes.X.path label in the Docker compose labels section, then it does not support additional volumes.

If you're provisioning a new project, we recommend avoiding the usage of -persistent service types, and use additional volumes as required for any persistent data.

Additional Service Ports#

Most services provide a default port, in cases where you want to use the services already defined in your docker-compose.yml file, you can configure a service to use those ports instead.

To use this feature, you set the lagoon.service.usecomposeports: true label on the service in your docker-compose.yml file. For more information on how to use this feature, see Additional Service Ports

Storage Types#

See storage types for more information.

basic#

Basic container, good to use for most applications that don't have an existing template. No persistent storage. The port can be changed using a label. If an autogenerated route is not required (e.g. for an internal-facing service, set lagoon.autogeneratedroute: false in the docker-compose.yml)

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 30003000YesNolagoon.service.port, lagoon.autogeneratedroute, lagoon.volumes.X.path

basic-persistent#

Like basic. Will also generate persistent storage, defines mount location via lagoon.persistent.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 30003000YesBulklagoon.service.port, lagoon.autogeneratedroute, lagoon.persistent, lagoon.persistent.name, lagoon.persistent.size, lagoon.volumes.X.path

basic-single#

Like basic-persistent. This will also generate persistent storage, defines mount location via lagoon.persistent.

Where this differs from basic-persistent is that the volume is a ReadWriteOnce volume type. The downsides to this service type are that it can't be scaled.

This service type does not support additional volumes.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 30003000YesBlocklagoon.service.port, lagoon.autogeneratedroute, lagoon.persistent, lagoon.persistent.name, lagoon.persistent.size

cli#

Use for any kind of CLI container (like PHP, Node.js, etc). Automatically gets the customer SSH private key that is mounted in /var/run/secrets/lagoon/sshkey/ssh-privatekey.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-NoNoNolagoon.volumes.X.path

cli-persistent#

Like cli, expects lagoon.persistent.name to be given the name of a service that has persistent storage, which will be mounted under defined lagoon.persistent label. Does NOT generate its own persistent storage, only used to mount another service's persistent storage.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-NoNoBulklagoon.persistent.name, lagoon.persistent, lagoon.volumes.X.path

elasticsearch#

Elasticsearch container, will auto-generate persistent storage under /usr/share/elasticsearch/data.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
HTTP on localhost:9200/_cluster/health?local=true9200NoBlocklagoon.persistent.size

mariadb#

A meta-service which will tell Lagoon to automatically decide between mariadb-single and mariadb-dbaas.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-----

mariadb-single#

MariaDB container. Creates cron job for backups running every 24h executing /lagoon/mysql-backup.sh 127.0.0.1.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 33063306NoBlocklagoon.persistent.size

mariadb-dbaas#

Uses a shared MariaDB server via the DBaaS Operator.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
Not Needed3306No--

mongodb#

A meta-service which will tell Lagoon to automatically decide between mongodb-single and mongodb-dbaas.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-----

mongodb-single#

MongoDB container, will generate persistent storage of min 1GB mounted at /data/db.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 2701727017NoBlocklagoon.persistent.size

mongodb-dbaas#

Uses a shared MongoDB server via the DBaaS Operator.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
Not Needed27017No--

nginx#

NGINX container. No persistent storage.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
localhost:50000/nginx_status8080YesNolagoon.autogeneratedroute, lagoon.volumes.X.path

nginx-php#

Like nginx, but additionally a php container.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
NGINX: localhost:50000/nginx_status, PHP: /usr/sbin/check_fcgi8080YesNolagoon.autogeneratedroute, lagoon.volumes.X.path

Note

When defining an nginx-php, or nginx-php-persistent service type, the order that the services are defined matters. The php service should be defined after the nginx service

nginx-php-persistent#

Like nginx-php. Will generate persistent storage, defines mount location via lagoon.persistent.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
NGINX: localhost:50000/nginx_status, PHP: /usr/sbin/check_fcgihttp on 8080YesBulklagoon.autogeneratedroute, lagoon.persistent, lagoon.persistent.name, lagoon.persistent.size, lagoon.volumes.X.path

Note

When defining an nginx-php, or nginx-php-persistent service type, the order that the services are defined matters. The php service should be defined after the nginx service

node#

Node.js container. No persistent storage.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 30003000YesNolagoon.autogeneratedroute, lagoon.volumes.X.path

node-persistent#

Like node. Will generate persistent storage, defines mount location via lagoon.persistent.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 30003000YesBulklagoon.autogeneratedroute, lagoon.persistent, lagoon.persistent.name, lagoon.persistent.size, lagoon.volumes.X.path

none#

Instructs Lagoon to completely ignore this service.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-----

opensearch#

OpenSearch container, will auto-generate persistent storage under /usr/share/opensearch/data.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
HTTP on localhost:9200/_cluster/health?local=true9200NoBlocklagoon.persistent.size

postgres#

A meta-service which will tell Lagoon to automatically decide between postgres-single and postgres-dbaas.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-----

postgres-single#

Postgres container. Creates cron job for backups running every 24h executing /lagoon/postgres-backup.sh localhost.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 54325432NoBlocklagoon.persistent.size

postgres-dbaas#

Uses a shared PostgreSQL server via the DBaaS Operator.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
Not Needed5432No--

python#

Python container. No persistent storage.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
HTTP connection on 88008800YesNolagoon.autogeneratedroute, lagoon.volumes.X.path

python-persistent#

Python container. With persistent storage.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
HTTP connection on 88008800YesBulklagoon.autogeneratedroute, lagoon.volumes.X.path

redis#

Redis container.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 63796379NoNo-

redis-persistent#

Redis container with auto-generated persistent storage mounted under /data.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 63796379NoBlocklagoon.persistent.size

solr#

Solr container with auto-generated persistent storage mounted under /var/solr.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 89838983NoBlocklagoon.persistent.size

valkey#

Valkey container.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 63796379NoNo-

valkey-persistent#

Valkey container with auto-generated persistent storage mounted under /data.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
TCP connection on 63796379NoBlocklagoon.persistent.size

varnish#

Varnish container.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
HTTP request localhost:8080/varnish_status8080YesNolagoon.autogeneratedroute

varnish-persistent#

Varnish container with auto-generated persistent storage mounted under /var/cache/varnish.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
HTTP request localhost:8080/varnish_status8080YesBlocklagoon.autogeneratedroute, lagoon.persistent.size

worker#

Use for any kind of worker container (like queue workers, etc.) where there is no exposed service port.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-NoNoNolagoon.volumes.X.path

worker-persistent#

Like worker, expects lagoon.persistent.name to be given the name of a service that has persistent storage, which will be mounted under defined lagoon.persistent label. Does NOT generate its own persistent storage, only used to mount another service's persistent storage.

HealthcheckExposed PortsAuto Generated RoutesStorageDocker compose labels
-NoNoBulklagoon.persistent.name, lagoon.persistent, lagoon.volumes.X.path