Standardise service names? #19

Closed
opened 2020-09-25 23:26:31 +00:00 by 3wordchant · 11 comments
Owner

There seem to be two competing standards for service naming; let's call them "specific":

services:
  foobar:
    ..
  mariadb:
    ..
  memcached:
    ..

and "generic":

services:
  app:
    ..
  db:
    ..
  cache:
    ..

I had been leaning towards "specific" for clarity in things like container names, but I think it's getting near Smurf naming territory (wordpress_wordpress..), and Docker-fluent upstreams like Nextcloud seem to be converging on "generic".

Another advantage of "generic" is it would help abra make a sensible guess when you run e.g. abra run with no arguments, where currently we'd need to parse compose.yml (and rely on consistent ordering..) or save the default service in per-stack configuration.

There seem to be two competing standards for service naming; let's call them "specific": ``` services: foobar: .. mariadb: .. memcached: .. ``` and "generic": ``` services: app: .. db: .. cache: .. ``` I had been leaning towards "specific" for clarity in things like container names, but I think it's getting near Smurf naming territory (`wordpress_wordpress..`), and Docker-fluent upstreams like Nextcloud seem to be converging on "generic". Another advantage of "generic" is it would help `abra` make a sensible guess when you run e.g. `abra run` with no arguments, where currently we'd need to parse `compose.yml` (and rely on consistent ordering..) or save the default service in per-stack configuration.
3wordchant added the
question
label 2020-09-25 23:26:31 +00:00
Owner

Good point! I'm easy on this but whichever way we go I think we should probably start some sort of style guide for this. "Generic" is the one we'd lean towards then?

Good point! I'm easy on this but whichever way we go I think we should probably start some sort of style guide for this. "Generic" is the one we'd lean towards then?
Author
Owner

Yeah currently "generic" is seeming better, that's what I used for compose-stacks/postfix-relay. Compose file style guide definitely seems like a good move.

Leaving this open to track converting existing repos to "generic" format.

Yeah currently "generic" is seeming better, that's what I used for `compose-stacks/postfix-relay`. Compose file style guide definitely seems like a good move. Leaving this open to track converting existing repos to "generic" format.
Owner

Yeah nice! We're now in a funny situation where its like "oh sick, I got this new app converted into a config and it works!" and "oh no, now we have more configs to change and maintain". It's great and not great :)

Yeah nice! We're now in a funny situation where its like "oh sick, I got this new app converted into a config and it works!" and "oh no, now we have more configs to change and maintain". It's great and not great :)
Author
Owner

I am fine taking responsibility for the forest of apps I've grown for the foreseeable future 🙃

I am fine taking responsibility for the forest of apps I've grown for the foreseeable future 🙃
Author
Owner
$ for f in stacks/*/compose.yml; do echo "${f}" && yq read --printMode p  "$f" 'services.*' && echo; done
stacks/codimd/compose.yml
services.postgres
services.codimd

stacks/drone/compose.yml
services.drone

stacks/example/compose.yml
services.app

stacks/invoiceninja/compose.yml
services.nginx
services.invoiceninja
services.mariadb

stacks/keycloak/compose.yml
services.keycloak
services.mariadb

stacks/kimai/compose.yml
services.mariadb
services.kimai

stacks/matomo/compose.yml
services.mariadb
services.matomo

stacks/matrix-synapse/compose.yml
services.synapse
services.coturn

stacks/mediawiki/compose.yml
services.mariadb
services.mediawiki

stacks/nextcloud/compose.yml
services.app
services.db

stacks/portainer/compose.yml
services.portainer

stacks/postfix-relay/compose.yml
services.app

stacks/rocketchat/compose.yml
services.app
services.db
services.mongo-init-replica

stacks/selfoss/compose.yml
services.selfoss

stacks/strapi/compose.yml
services.app
services.db

stacks/swarmpit/compose.yml
services.app
services.db
services.influxdb
services.agent

stacks/traefik/compose.yml
services.traefik

stacks/wordpress/compose.yml
services.app
services.db
``` $ for f in stacks/*/compose.yml; do echo "${f}" && yq read --printMode p "$f" 'services.*' && echo; done stacks/codimd/compose.yml services.postgres services.codimd stacks/drone/compose.yml services.drone stacks/example/compose.yml services.app stacks/invoiceninja/compose.yml services.nginx services.invoiceninja services.mariadb stacks/keycloak/compose.yml services.keycloak services.mariadb stacks/kimai/compose.yml services.mariadb services.kimai stacks/matomo/compose.yml services.mariadb services.matomo stacks/matrix-synapse/compose.yml services.synapse services.coturn stacks/mediawiki/compose.yml services.mariadb services.mediawiki stacks/nextcloud/compose.yml services.app services.db stacks/portainer/compose.yml services.portainer stacks/postfix-relay/compose.yml services.app stacks/rocketchat/compose.yml services.app services.db services.mongo-init-replica stacks/selfoss/compose.yml services.selfoss stacks/strapi/compose.yml services.app services.db stacks/swarmpit/compose.yml services.app services.db services.influxdb services.agent stacks/traefik/compose.yml services.traefik stacks/wordpress/compose.yml services.app services.db ```
Author
Owner

Still left:

  • Invoiceninja
  • Keycloak
  • Portainer
  • Traefik

Not sure about Renovate, given it's not expected to be running anyway?

Still left: - Invoiceninja - Keycloak - Portainer - Traefik Not sure about Renovate, given it's not expected to be running anyway?
Owner

Not sure about Renovate, given it’s not expected to be running anyway?

I guess app doesn't quite cut it but maybe we can just use it anyway :)

> Not sure about Renovate, given it’s not expected to be running anyway? I guess `app` doesn't quite cut it but maybe we can just use it anyway :)
Author
Owner

Kimai, Keycloak and Portainer done 👌

Kimai, Keycloak and Portainer done 👌
Owner

Just ran through the last ones, watch out on your re-deploys! Better stack rm first...

clones/codimd/compose.yml
services.app
services.db

clones/docs.cloud.autonomic.zone/compose.yml
services.app

clones/example/compose.yml
services.app

clones/foodsoft/compose.yml
services.app
services.cron
services.worker
services.db
services.cache

clones/invoiceninja/compose.yml
services.web
services.app
services.db

clones/keycloak/compose.yml
services.app
services.db

clones/kimai/compose.yml
services.app
services.db

clones/mailu/compose.yml
services.front
services.db
services.admin
services.imap
services.smtp
services.antispam
services.webmail
services.certdumper

clones/matrix-synapse/compose.yml
services.app

clones/mediawiki/compose.yml
services.app
services.db
services.parsoid

clones/nextcloud/compose.yml
services.app
services.db

clones/portainer/compose.yml
services.app
services.agent

clones/rocketchat/compose.yml
services.app
services.db
services.mongo-init-replica

clones/selfoss/compose.yml
services.app

clones/strapi/compose.yml
services.app
services.db

clones/swarmpit/compose.yml
services.app
services.db
services.influxdb
services.agent

clones/traefik/compose.yml
services.app

clones/wordpress/compose.yml
services.app
services.db
Just ran through the last ones, watch out on your re-deploys! Better `stack rm` first... ``` clones/codimd/compose.yml services.app services.db clones/docs.cloud.autonomic.zone/compose.yml services.app clones/example/compose.yml services.app clones/foodsoft/compose.yml services.app services.cron services.worker services.db services.cache clones/invoiceninja/compose.yml services.web services.app services.db clones/keycloak/compose.yml services.app services.db clones/kimai/compose.yml services.app services.db clones/mailu/compose.yml services.front services.db services.admin services.imap services.smtp services.antispam services.webmail services.certdumper clones/matrix-synapse/compose.yml services.app clones/mediawiki/compose.yml services.app services.db services.parsoid clones/nextcloud/compose.yml services.app services.db clones/portainer/compose.yml services.app services.agent clones/rocketchat/compose.yml services.app services.db services.mongo-init-replica clones/selfoss/compose.yml services.app clones/strapi/compose.yml services.app services.db clones/swarmpit/compose.yml services.app services.db services.influxdb services.agent clones/traefik/compose.yml services.app clones/wordpress/compose.yml services.app services.db ```
Owner

Hmmm, FYI, I just went through a configuration fiasco because the traefik-forward-auth container expects a non-generic naming of the service definition. So, sometimes it is not possible. I think this is the only exception but just good to know.

Hmmm, FYI, I just went through a configuration fiasco because the traefik-forward-auth container expects a non-generic naming of the service definition. So, sometimes it is not possible. I think this is the only exception but just good to know.
Author
Owner

Ah nice spot, thank you!

Ah nice spot, thank you!
This repo is archived. You cannot comment on issues.
No description provided.