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`
|
2022-09-27 23:11:14 +00:00
|
|
|
- [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-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
|
|
|
|
link/ether 02:42:69:cd:44:2c brd ff:ff:ff:ff:ff:ff
|
|
|
|
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
|
|
|
|
valid_lft forever preferred_lft forever
|
|
|
|
inet6 fe80::42:69ff:fecd:442c/64 scope link
|
|
|
|
valid_lft forever preferred_lft forever
|
|
|
|
```
|