Easy Deployment
Easy deployment tool for Python application. There are mainly two parts:
- Create a virtual environment (Optional).
- Install your application as a service.
Deploy your application with one command!
Install
It's recommended that you install this package in the Global Python Environment.
pip install ezd
On Windows, be careful if you want to uninstall this package. Make sure all services created with this tool are removed.
Usage
Config file
Run ezd init
to create a config file named deploy.json
.
{
"env": {
"name": "venv"
},
"service": {
"name": "",
"cmd": [],
"display": "",
"description": ""
}
}
A list of full parameters:
Parameter | Type | Description | Windows | Linux |
---|---|---|---|---|
env.name | string | The name of virtual environment. | βοΈ | βοΈ |
env.lookup | string | Offline package lookup directory used by pip. | βοΈ | βοΈ |
env.local | string | A directory contains local package file. | βοΈ | βοΈ |
env.requirement | bool | Whether to install dependencies in requirements.txt . Default is true . |
βοΈ | βοΈ |
service.name | string | The name of service. | βοΈ | βοΈ |
service.cmd | list[string] | The command line to be executed. | βοΈ | βοΈ |
service.display | string | Display name of service. | βοΈ | β |
service.description | string | Description of service. | βοΈ | βοΈ |
service.start | string | Start type of service (demand/auto/boot/disabled/system). Default is auto . |
βοΈ | βοΈ |
service.restart | int | Restart delay (seconds) when service failed. Default is 30 . |
βοΈ | βοΈ |
service.restart_policy | string | Configures whether the service shall be restarted when the service exits. Default is on-failure . |
β | βοΈ |
service.runtime_max_sec | int | Configures a maximum time for the service to run. Default is 0 . |
β | βοΈ |
service.working_directory | string | Configures the working directory of the service. Default is . . |
βοΈ | βοΈ |
service.deps | list[string] | Dependencies of service. | βοΈ | βοΈ |
service.interactive | bool | Run service in interactive mode. Default is false . |
βοΈ | β |
service.user | string | Run service with given user. | βοΈ | βοΈ |
service.password | string | Password of the user. | βοΈ | β |
service.delayed | bool | Delayed start of service. | βοΈ | β |
Commands
Run ezd -h
to see all commands.
usage: ezd [-h] command
Easy Deployment Tool
positional arguments:
command Command <init|deploy|install|uninstall|start|stop>
options:
-h, --help show this help message and exit
--config CONFIG config file
Available commands:
Command | Description |
---|---|
init | Create an example config file deploy.json . |
deploy | Create virtual environment and install dependencies. |
install | Install a service (Automatically run deploy command first). |
uninstall | Remove service (Automatically run stop command first). |
start | Start service. |
stop | Stop service. |
Update config
Upgrade or install packages
If you need to upgrade or install packages, just edit the requirements.txt
file and follow the steps below:
-
Stop the service
ezd stop
-
Deploy new packages
ezd deploy
-
Start the service
ezd start
Update service
If you update the service settings of the config file, you must uninstall
the old service first.
-
Uninstall the service
ezd uninstall
-
Install service
ezd install
-
Start the service
ezd start
Examples
Jupyter notebook
Create a new nb
directory and start working in it.
cd nb
echo notebook > requirements.txt
ezd init
The deploy.json
file looks like this:
{
"env": {
"name": "venv"
},
"service": {
"name": "notebook",
"cmd": [
"jupyter-notebook.exe"
],
"display": "Jupyter Notebook",
"description": "Jupyter Notebook Service"
}
}
We are ready to deploy now.
ezd install
ezd start
You can now visit http://localhost:8888/ to confirm jupyter notebook is running.
Ping test
Create a new pingtest
directory and start working in it.
cd pingtest
ezd init
For non-python project, we can omit virtual environment since we don't need it. The deploy.json
file looks like this:
{
"service": {
"name": "pingtest",
"cmd": [
"ping",
"-t",
"1.1.1.1"
],
"display": "Ping it",
"description": "A ping test service"
}
}
Deploy now!
ezd install
ezd start
Let's confirm ping is running:
$ tasklist | findstr PING
PING.EXE 19564 Services 0 4,540 K