# Project plan — indawo_docker

Evidence date: 2026-10-12.

Source repository: `git@bitbucket.org:overdrive/indawo_docker.git`.

This plan describes what that repository contains. It does not decide what the product should become.

The scan-host path named on the onboarding issue (`~/projects/sonar_scan/repos/indawo_docker`) was not on this machine. The tree below was read from a clone of `main`. That revision is the same commit the issue records (`76c21e3`, 2025-03-08 10:52:45 +0200, subject `updating container`). `git ls-remote --heads --tags` on 2026-10-12 returned one ref: `refs/heads/main` at `76c21e36f6668cdb4c4d9947a1c00afc57df5a4a`. No tags.

There is no prior Silicon Ark set for `indawo_docker`.

## Product

The repository is a Docker Compose environment. It is not an application with its own screens, routes, or database schema.

Two product descriptions exist in the history, and they disagree.

| Identity | Where | Provenance |
|---|---|---|
| Repository name `indawo_docker` | Git remote | **Implemented** |
| "PHP 5.6 and MySQL Development Environment" with an external-drive mount and MySQL database name `indawo` | README and `docker-compose.yml` at `2567dfc` (2025-02-20). Removed from the tree at `76c21e3` | **Documented** and **Implemented** in that commit. **Removed** on `main` |
| "LAMP stack built with Docker Compose" cloned from `https://github.com/sprintcube/docker-compose-lamp.git` | Current `README.md` | **Documented**. The clone URL is the upstream project, not this Bitbucket remote |
| Local PHP 5.6 Apache image plus MySQL 5.7, phpMyAdmin, and Redis | Current `docker-compose.yml`, `sample.env`, `bin/php56/Dockerfile`, `bin/mysql57/Dockerfile` | **Implemented** |
| Commented MySQL database name `indawo_online` and commented user `silicon` | `sample.env` | **Documented** as comments. The password on that commented block is not copied into Silicon Ark |
| MIT License, copyright Narendra Vaghela (2017) and Malte Graebner (2019) | `LICENSE` | **Documented**. Those names are the upstream authors |

The current README says the stack is for local development and is not for production use. Provenance: **Documented**.

Whether operators still use the February Indawo-specific compose (database `indawo`, `./src`, `/external/drive`) or the March sprintcube-derived compose is **Unknown / Requires Confirmation**. `main` contains only the March tree.

## Branch reality

| Commit | Date | Author | Subject |
|---|---|---|---|
| `1d349a3` | 2025-02-20 | Jaco Brits `jaco@overdrive.co.za` | Initial commit. Adds `.gitignore` only |
| `cc17467` | 2025-02-20 | Jaco Brits `jaco@netstart.co.za` | New docker for php 5.6 , and mysql. Adds a short README and a two-service compose file |
| `2567dfc` | 2025-02-20 | Jaco Brits `jaco@netstart.co.za` | obdc update done. Adds `Dockerfile-php` (Microsoft ODBC) and expands the README. The subject spells ODBC as "obdc" |
| `76c21e3` | 2025-03-08 | Ettiene `ettiene@overdrive.co.za` | updating container. Replaces the compose file and README with a sprintcube-style LAMP stack, adds `bin/php56`, `bin/mysql57`, `sample.env`, `dev_build_container.sh`, `LICENSE`, and `todo.md`, and deletes `Dockerfile-php` |

`origin/HEAD` is `main`. No other branch was on the remote.

## Scope on `main`

In the committed tree:

- Compose services `webserver`, `database`, `phpmyadmin`, and `redis`.
- A PHP 5.6 Apache image (`bin/php56/Dockerfile`) that points Debian Stretch at `archive.debian.org`, installs PHP extensions, Composer, Xdebug 2.5.5, unixODBC, and FreeTDS, and enables Apache `ssl`, `rewrite`, and `headers`.
- A second PHP 5.6 Dockerfile (`bin/php56/Dockerfile2`) with the same base and extensions except the ODBC/FreeTDS work. Compose builds the directory, so the file named `Dockerfile` is the one the compose file selects.
- A MySQL 5.7 image that is only `FROM mysql:5.7` (`bin/mysql57/Dockerfile`).
- `sample.env` defaults: `PHPVERSION=php56`, `DATABASE=mysql57`, project name `lamp`, web ports 80 and 443, MySQL on `3306`, phpMyAdmin on `8080` and `8443`, Redis on `6379`.
- A Linux shell script (`dev_build_container.sh`) that builds a matrix of PHP and database variants. Most of those variant directories are not in this tree.
- `todo.md` with two open items.

Out of the committed tree, though named by the current README or by the script:

- PHP image directories other than `php56` (`php54`, `php71`, `php72`, `php73`, `php74`, `php8`, `php81`, `php82`, `php83`).
- Database image directories other than `mysql57` (`mysql8`, `mariadb103`, `mariadb104`, `mariadb105`, `mariadb106`).
- `www/`, `config/`, `data/`, `logs/`, `buildtest/`. `.gitignore` ignores `/.env`, `/config/*`, `/data/*`, `/logs/*`, `/www/**`, and `/buildtest`.
- Virtual-host files, `php.ini`, SSL certificates, and MySQL init scripts.
- `test_db.php` and `test_db_pdo.php`, which the build script requests from `http://localhost/`.
- GitHub issue templates. `todo.md` says to update them. No `.github/` directory is committed.

Application source for Indawo is not in this repository. The compose file expects a host directory (default `./www`) mounted at `/var/www/html`. What that directory contains in any developer's checkout is **Unknown / Requires Confirmation**.

## Scan-host files that are not in git

The onboarding issue (2026-09-28) listed this top-level structure:

```text
bin
CHANGELOG.md
dev_build_container.sh
docker-compose.yml
docs
LICENSE
README.md
sample.env
sonar-project.properties
sonarqube_scan.bat
todo.md
```

`CHANGELOG.md`, `docs/`, `sonar-project.properties`, and `sonarqube_scan.bat` are not in `76c21e3`. `.gitignore` does not ignore those names. Their contents are **Unknown / Requires Confirmation**. The likely reading is that they existed only on the scan-host working copy. That reading is **Inferred**, because that directory could not be opened.

## Milestones visible in git

1. **2025-02-20 — empty ignore file.** `1d349a3` commits a stock ignore list (Atlassian gitignore tutorial header, Node/Java/Python/Maven examples). No Docker file yet.
2. **2025-02-20 — PHP 5.6 and MySQL 5.7 compose.** `cc17467` documents a development environment, mounts `./src` and `/external/drive`, and sets MySQL database `indawo`.
3. **2025-02-20 — ODBC toward Microsoft SQL Server.** `2567dfc` builds `Dockerfile-php` with `msodbcsql` and `pdo_odbc`, and passes `MSSQL_HOST`, `MSSQL_DATABASE`, `MSSQL_USER`, and `MSSQL_PASSWORD` into the PHP service. Values in compose are the placeholders `your_mssql_host`, `your_mssql_db`, `your_mssql_user`, `your_mssql_password`.
4. **2025-03-08 — container update to a multi-service LAMP layout.** `76c21e3` is the current tree. The Indawo README, the external-drive mount, the `./src` mount, the named volume `mysql_data`, and `Dockerfile-php` are deleted in that commit. FreeTDS/unixODBC support is reintroduced inside `bin/php56/Dockerfile` with host `your_sql_server_host`.

No commit message states a release, a customer, or a deployment target. No pipeline file is present, so no CI milestone exists in git.

## Known dependencies

| Dependency | How it is pinned | Provenance |
|---|---|---|
| Docker Compose file format `version: "3"` | `docker-compose.yml` | **Implemented** |
| `php:5.6-apache` | `FROM` in both PHP Dockerfiles | **Implemented** |
| `mysql:5.7` | `FROM` in `bin/mysql57/Dockerfile` | **Implemented** |
| Image `phpmyadmin` with no tag | `docker-compose.yml` | **Implemented** |
| Image `redis:latest` | `docker-compose.yml` | **Implemented** |
| Debian Stretch packages from `archive.debian.org` | `bin/php56/Dockerfile` | **Implemented** |
| PHP source tarball `php-5.6.40.tar.gz` from `https://www.php.net/distributions/` | ODBC build in `bin/php56/Dockerfile` | **Implemented** |
| Composer installer `https://getcomposer.org/installer` | Both PHP Dockerfiles | **Implemented** |
| PECL `xdebug-2.5.5` | Both PHP Dockerfiles | **Implemented** |
| Host Docker engine and Compose | README prerequisites are implied by the install steps. The script checks for `docker`, `docker-compose`, `curl`, and `sed` | **Documented** in the script. README install line is `docker compose up -d` |

No `composer.json`, `package.json`, or application lockfile is in the tree. Composer is installed in the image so a mounted application can use it. Provenance: **Implemented** install. Whether any application does use it is **Unknown**.

## Current status

`main` is a local development stack whose README still describes the upstream sprintcube project (many PHP versions, `config/vhosts`, GitHub clone URL, production warnings). The files that make this checkout specific are the PHP 5.6 Dockerfiles, the MySQL 5.7 Dockerfile, and the `sample.env` defaults (`php56`, `mysql57`, plus a commented `indawo_online` database name).

`todo.md` still asks for a README redesign and for issue-template updates. Both are open. Provenance: **Planned** (`todo.md`). No date is attached.

There is no implemented production deploy, no health check beyond the Linux build script, and no test suite in git.

## Related Silicon Ark projects

These are separate remotes. Nothing in `indawo_docker` names them.

| Project | What Silicon Ark already records | Relation to this repo |
|---|---|---|
| `indawo_online_docker` | One commit, `.gitignore` only, no Dockerfile. The name is the only hint of a Docker packaging | **Unknown / Requires Confirmation**. The only string in common inside this repo is the commented `MYSQL_DATABASE='indawo_online'` in `sample.env` |
| `quantiviaLive` | A README titled "Indawo / Code Deploy with AWS and FTP Deploy", vhost `local.indawo`, CodeDeploy application `CodedeployDev`, and an FTP path `public_html/indawo.overdriveqa.co.za` | **Unknown / Requires Confirmation**. This repository does not mention Quantivia, CodeDeploy, FTP, or those hostnames |

## Human confirmation

1. Is `76c21e3` the environment developers run for Indawo, or did the March commit replace a still-wanted February compose (database `indawo`, `./src`, external drive, Microsoft ODBC)?
2. Which application is mounted at `DOCUMENT_ROOT`, and is the commented database `indawo_online` that application?
3. Is `bin/php56/Dockerfile` (Compose default, with FreeTDS) the image to keep, and is `Dockerfile2` an unused alternate?
4. Should the commented database password in `sample.env` stay in git?
5. Were `CHANGELOG.md`, `docs/`, `sonar-project.properties`, and `sonarqube_scan.bat` local-only files on the scan host?
6. Are `indawo_online_docker` and the Indawo strings inside `quantiviaLive` the same product as this stack?
