[BUG] When the Docker Compose File gets into a bad state
- Dominant language
- Python
- Stars
- 166
- Forks
- 76
- PR merge metrics
- No merged PRs in 30d
Description
### Description
Have found a bug where its possible to get the docker compose file (`/root/.iotedgehubdev/data/data/docker-compose.yml`) into a bad state that you can't easily recover from with out taking the action of deleting the docker compose file
```
"createOptions": {
"HostConfig": {
"Binds": [
"./certs:/https:ro"
],
"PortBindings": {
"443/tcp": [
{
"HostPort": "5001"
}
]
}
}
}
```
`sudo iotedgedev simulator start`
```
ERROR: The Compose file '/root/.iotedgehubdev/data/data/docker-compose.yml' is invalid because:
volumes value './certs' does not match any of the regexes: '^[a-zA-Z0-9._-]+$'
ERROR: Error while executing command: docker-compose -f /root/.iotedgehubdev/data/data/docker-compose.yml down. Command '['docker-compose', '-f', '/root/.iotedgehubdev/data/data/docker-compose.yml', 'down']' returned non-zero exit status 1.
ERROR: Error while executing command: iotedgehubdev stop. Command '['iotedgehubdev', 'stop']' returned non-zero exit status 1.
```
`cat /root/.iotedgehubdev/data/data/docker-compose.yml`
```
volumes:
./certs:
name: ./certs
edgehubdev:
name: edgehubdev
edgemoduledev:
name: edgemoduledev
```
Possible fixes might be just need to add some more validation to the manifest to protect docker compose file
or maybe just delete the docker compose file (`/root/.iotedgehubdev/data/data/docker-compose.yml`) if it becomes invalid
### Expected behavior
Changes to the deployment manifest should mean the down stream docker compose file is regenerated
Other possible fixes might be just need to add some more validation to the manifest to protect docker compose file
Or even just delete the docker compose file (`/root/.iotedgehubdev/data/data/docker-compose.yml`) if it becomes invalid
### Actual behavior
Changing the deployment manifest after the docker compose file has got into a bad state has no effect and you are stuck, unless you force delete the docker compose file in `/root/.iotedgehubdev/data/data/docker-compose.yml`
### Steps to Reproduce
Change your deployment manifest into something thats going to mean an invalid docker compose file
such as a bind path of `./`
run commands such as
`sudo iotedgedev simulator start`
get `ERROR: Error while executing command: docker-compose`
### Environment
iotedgedev, version 3.3.7
Python 3.7.15
pip 22.3.1 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7)
WSL2 Ubuntu 22.04
Contributor guide
Assessment
This issue has not been assessed yet.