serverctl/README.md

82 lines
1.8 KiB
Markdown
Raw Normal View History

2022-09-27 10:29:56 +00:00
# ServerCtl - Services for Developers
2022-09-27 10:47:30 +00:00
## Todo
2022-09-27 10:29:56 +00:00
2022-09-27 10:47:30 +00:00
- [ ] Add a --temporary option to start to remove volume after stop
2022-09-27 23:12:53 +00:00
- [x] Rename from `serverctl` to `server`
- [x] Implement variables in environment section
- [x] Provide environment, ex. `${SERVER_HOST}` for docker host IP
- [x] Add filtering to `find` command, to seach for tags or name
- [ ] App port binding, i.e. phpmyadmin on 9000, phpcacheadmin on 9001
2022-09-28 11:22:19 +00:00
- [ ] Make use of a `~/.serverenvs` to override envs for instances
- [ ] Consider UDP?
2022-09-27 10:29:56 +00:00
## Examples
Say you need a Mongodb instance for something. Try this:
```
$ serverctl start mongo
Started mongo<default>
Mongo client: 27017
$
```
What just happened? Well, the `start` command pulled and started a new container
from the latest docker image using sensible defaults from the service registry.
Let's start another one:
```
$ serverctl start mongo --instance other --portoffset 1
Started mongo<other>
Mongo client: 27018
$
```
Check it out!
```
$ serverctl status
Service Instance Ports
mongo default 27017
other 27018
$ serverctl stop mongo --all
Stopped mongo<default>
Stopped mongo<other>
$
```
## FAQ
### Where is the data stored?
* Data goes in `$HOME/.var/serverctl`
2022-09-27 23:36:17 +00:00
### How can I tell a container to connect to another container?
**Static configuration**
If you need to preconfigure a connection, use the *DOCKER_HOST* environment
variable. It will only work in the *environment* section of the service config:
```json
"environment": {
"FOO_SERVER": "${DOCKER_HOST}"
}
```
**From running container**
Lookup the IP on your host. On Linux you would do something like:
```
$ ip addr show docker0
6: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
2022-09-28 11:22:19 +00:00
...
2022-09-27 23:36:17 +00:00
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
2022-09-28 11:22:19 +00:00
...
2022-09-27 23:36:17 +00:00
```