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)
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 3000 |
3000 |
Yes | No | lagoon.service.port, lagoon.autogeneratedroute, lagoon.volumes.X.path |
basic-persistent#
Like basic. Will also generate persistent storage, defines mount location via lagoon.persistent.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 3000 |
3000 |
Yes | Bulk | lagoon.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.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 3000 |
3000 |
Yes | Block | lagoon.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.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | No | No | No | lagoon.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.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | No | No | Bulk | lagoon.persistent.name, lagoon.persistent, lagoon.volumes.X.path |
elasticsearch#
Elasticsearch container, will auto-generate persistent storage under /usr/share/elasticsearch/data.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
HTTP on localhost:9200/_cluster/health?local=true |
9200 | No | Block | lagoon.persistent.size |
mariadb#
A meta-service which will tell Lagoon to automatically decide between mariadb-single and mariadb-dbaas.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | - | - | - | - |
mariadb-single#
MariaDB container. Creates cron job for backups running every 24h executing /lagoon/mysql-backup.sh 127.0.0.1.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 3306 |
3306 |
No | Block | lagoon.persistent.size |
mariadb-dbaas#
Uses a shared MariaDB server via the DBaaS Operator.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| Not Needed | 3306 |
No | - | - |
mongodb#
A meta-service which will tell Lagoon to automatically decide between mongodb-single and mongodb-dbaas.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | - | - | - | - |
mongodb-single#
MongoDB container, will generate persistent storage of min 1GB mounted at /data/db.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 27017 |
27017 |
No | Block | lagoon.persistent.size |
mongodb-dbaas#
Uses a shared MongoDB server via the DBaaS Operator.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| Not Needed | 27017 |
No | - | - |
nginx#
NGINX container. No persistent storage.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
localhost:50000/nginx_status |
8080 |
Yes | No | lagoon.autogeneratedroute, lagoon.volumes.X.path |
nginx-php#
Like nginx, but additionally a php container.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
NGINX: localhost:50000/nginx_status, PHP: /usr/sbin/check_fcgi |
8080 |
Yes | No | lagoon.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.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
NGINX: localhost:50000/nginx_status, PHP: /usr/sbin/check_fcgi |
http on 8080 |
Yes | Bulk | lagoon.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.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 3000 |
3000 |
Yes | No | lagoon.autogeneratedroute, lagoon.volumes.X.path |
node-persistent#
Like node. Will generate persistent storage, defines mount location via lagoon.persistent.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 3000 |
3000 |
Yes | Bulk | lagoon.autogeneratedroute, lagoon.persistent, lagoon.persistent.name, lagoon.persistent.size, lagoon.volumes.X.path |
none#
Instructs Lagoon to completely ignore this service.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | - | - | - | - |
opensearch#
OpenSearch container, will auto-generate persistent storage under /usr/share/opensearch/data.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
HTTP on localhost:9200/_cluster/health?local=true |
9200 | No | Block | lagoon.persistent.size |
postgres#
A meta-service which will tell Lagoon to automatically decide between postgres-single and postgres-dbaas.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | - | - | - | - |
postgres-single#
Postgres container. Creates cron job for backups running every 24h executing /lagoon/postgres-backup.sh localhost.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 5432 |
5432 |
No | Block | lagoon.persistent.size |
postgres-dbaas#
Uses a shared PostgreSQL server via the DBaaS Operator.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| Not Needed | 5432 |
No | - | - |
python#
Python container. No persistent storage.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
HTTP connection on 8800 |
8800 |
Yes | No | lagoon.autogeneratedroute, lagoon.volumes.X.path |
python-persistent#
Python container. With persistent storage.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
HTTP connection on 8800 |
8800 |
Yes | Bulk | lagoon.autogeneratedroute, lagoon.volumes.X.path |
redis#
Redis container.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 6379 |
6379 |
No | No | - |
redis-persistent#
Redis container with auto-generated persistent storage mounted under /data.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 6379 |
6379 |
No | Block | lagoon.persistent.size |
solr#
Solr container with auto-generated persistent storage mounted under /var/solr.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 8983 |
8983 |
No | Block | lagoon.persistent.size |
valkey#
Valkey container.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 6379 |
6379 |
No | No | - |
valkey-persistent#
Valkey container with auto-generated persistent storage mounted under /data.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
TCP connection on 6379 |
6379 |
No | Block | lagoon.persistent.size |
varnish#
Varnish container.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
HTTP request localhost:8080/varnish_status |
8080 |
Yes | No | lagoon.autogeneratedroute |
varnish-persistent#
Varnish container with auto-generated persistent storage mounted under /var/cache/varnish.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
HTTP request localhost:8080/varnish_status |
8080 |
Yes | Block | lagoon.autogeneratedroute, lagoon.persistent.size |
worker#
Use for any kind of worker container (like queue workers, etc.) where there is no exposed service port.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | No | No | No | lagoon.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.
| Healthcheck | Exposed Ports | Auto Generated Routes | Storage | Docker compose labels |
|---|---|---|---|---|
| - | No | No | Bulk | lagoon.persistent.name, lagoon.persistent, lagoon.volumes.X.path |