product:containers

Show Docker container status for the active product and all its features.


Usage

splent product:containers [--dev] [--prod]

Example output

my_first_app  [dev]

  SOURCE                             SERVICE                        STATUS         PORTS
  ──────────────────────────────────────────────────────────────────────────────────────────
  splent_feature_redis@v1.5.6        splent_feature_redis           running 6971→6379
  splent_feature_nginx@v1.0.0        splent_feature_nginx           running 671→80
  splent_feature_phpmyadmin@v1.0.0   splent_feature_phpmyadmin      running 8672→80
  splent_feature_mailhog@v1.0.7      splent_feature_mailhog         running 1616→1025, 8616→8025
  my_first_app                       my_first_app_db                running 33651→3306
  my_first_app                       my_first_app_web               running 5591→5000

  Accessible services:
  ──────────────────────────────────────────────────────────────────────────────────────────
    Nginx                         http://localhost:671
    phpMyAdmin                    http://localhost:8672
    Mailhog                       http://localhost:8616
    App                           http://localhost:5591

  Connection endpoints:
  ──────────────────────────────────────────────────────────────────────────────────────────
    Redis                         localhost:6971
    Mailhog SMTP                  localhost:1616
    MariaDB                       localhost:33651

  Port offset: +591
  crc32("my_first_app") % 1000 = 591

    SERVICE                    BASE  OFFSET    HOST  CONTAINER
    ─────────────────────────────────────────────────────────────
    splent_feature_redis       6380    +591    6971  → 6379
    splent_feature_nginx         80       —      80  → 80
    splent_feature_phpmyadmin  8081    +591    8672  → 80
    splent_feature_mailhog     1025    +591    1616  → 1025
    splent_feature_mailhog     8025    +591    8616  → 8025
    my_first_app_db           33060    +591   33651  → 3306
    my_first_app_web           5000       —    5591  → 5000

Options

Option Description
--dev Use the development Docker Compose file.
--prod Use the production Docker Compose file.

If neither flag is provided, the command reads SPLENT_ENV directly from the running web container (docker exec {product}_web printenv SPLENT_ENV). This means it always reflects the actual running environment — if you deployed prod, it shows prod containers; if you derived dev, it shows dev containers. No manual flag needed.


Description

Container discovery depends on the environment:

Dev mode — each feature runs as its own Docker Compose project. The command queries each feature’s compose file individually, then the product’s own compose file.

Prod mode — everything runs under a single merged docker-compose.deploy.yml (generated by product:build). The command queries that single compose project and labels containers by their service name.

Each container is shown with:

Column Description
SOURCE Which feature or the product name — tells you where the container comes from
SERVICE Docker Compose service name
STATUS Container state, colour-coded
PORTS Host→container port mappings

Status colours

  • Green — running / healthy
  • Yellow — starting / restarting
  • Red — exited / stopped / unhealthy

Accessible services

HTTP services that can be opened in a browser (Flask on 5000, Mailhog UI on 8025, Nginx on 80, phpMyAdmin on 80, etc.) are listed with their http://localhost:PORT URLs.

Connection endpoints

Non-HTTP services (Redis, MariaDB, SMTP) are shown separately with their localhost:PORT connection strings — useful for configuring database clients, Redis CLI, or mail tools.

Port offset table

At the bottom, a summary table shows how the port offset was applied to each service:

Column Description
SERVICE Docker Compose service name
BASE The original port declared in the feature’s .env.example
OFFSET The product-specific offset (+591 in this example), or if not adjusted
HOST The resulting port on the host (BASE + OFFSET)
CONTAINER The internal container port

The offset formula (crc32(product_name) % 1000) is shown so the developer understands why these specific port numbers were assigned. See Port offset for full details.


See also


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es