About • Roadmap • Available Commands • Docker • Changelog • License
WRPT is a lightweight command-line interface designed to streamline the deployment of Docker-Compose stacks on Portainer.
While its primary focus is on stack deployment, it also provides additional features such as stack/endpoint listing and access control management (wip). WRPT is designed not only for manual usage but also for integration into CI/CD pipelines, making it a versatile tool for automating deployment workflows.
This project draws inspiration from @tortuetorche's work on psuapp/psy.
It is also my first project written in Rust and is under active development, so contributions and feedback are welcome! Stay tuned for new features and improvements.
Here are the planned enhancements and features for WRPT:
- 🚧 Access Control Management: Enable stack deployments with fine-grained access control, allowing assignment to specific users and/or groups.
- 🚧 Comprehensive Documentation: Write detailed usage guides, including setup instructions for integration into CI/CD pipelines on GitLab and GitHub.
- ⏳ Automated Testing: Write tests to ensure the reliability and stability of the tool.
- đź’ Kubernetes Compatibility: Extend the tool to support Portainer deployments on Kubernetes environment.
- âś… Automated Release Process: Implement CI pipelines to generate changelogs and releases automatically based on versioning and commit history.
- âś… Docker Image: Create a Docker image.
- âś… : Completed
- 🚧 : In progress
- ⏳ : Pending
- đź’ : In reflection
- ❌ : Abandoned
Name | Description |
---|---|
stack deploy |
Deploy/update a stack. |
stack remove |
Remove a stack. |
stack list |
List all stacks based on the current user authorizations. |
stack resource-control |
Display the ResourceControl details of a specific stack. |
stack start |
Starts a stack. |
stack stop |
Stops a stack. |
endpoint list |
List endpoints. |
team list |
List teams. |
user list |
List users. |
help |
Display help message. |
Flag | Option | Description |
---|---|---|
-l | --url <URL> |
URL of the Portainer instance. |
-A | --access-token <ACCESS_TOKEN> |
Access token of the Portainer instance. Learn how to generate an access token here. |
--color <COLOR> |
When to use terminal colours [default: auto] [possible values: auto, always, never]. | |
--insecure |
Skip the host's SSL certificate verification, use at your own risk. | |
-v... | Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace. | |
-q | --quiet |
Do not output any message. |
-h | --help |
Print help. |
Environment variable | Description |
---|---|
PORTAINER_URL=URL |
URL of the Portainer instance. |
PORTAINER_ACCESS_TOKEN=TOKEN |
Access token of the Portainer instance. |
Deploy a stack
Usage: wrpt stack deploy [OPTIONS] --endpoint <ENDPOINT> --compose-file <COMPOSE_FILE> <STACK_NAME>
Arguments:
<STACK_NAME> Name of the stack
Options:
-E, --endpoint <ENDPOINT> Id of the environment (endpoint) that will be used
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-c, --compose-file <COMPOSE_FILE> Path to docker compose/stack file
-e, --env-file <ENV_FILE> Path to a file of environment variables, to be used by the stack
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
--prune Whether to prune unused containers or not
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
--pull-image Force a pulling to current image with the original tag though the image is already the latest
-h, --help Print help
Remove a stack
Usage: wrpt stack remove [OPTIONS] --endpoint <ENDPOINT> <STACK_NAME>
Arguments:
<STACK_NAME> Name of the stack
Options:
-E, --endpoint <ENDPOINT> Id of the environment (endpoint) that will be used
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
Display the ResourceControl details of a specific stack
Usage: wrpt stack resource-control [OPTIONS] --endpoint <ENDPOINT> <STACK_NAME>
Arguments:
<STACK_NAME> Name of the stack
Options:
-E, --endpoint <ENDPOINT> Id of the environment (endpoint) that will be used
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
Starts a stack
Usage: wrpt stack start [OPTIONS] --endpoint <ENDPOINT> <STACK_NAME>
Arguments:
<STACK_NAME> Name of the stack
Options:
-E, --endpoint <ENDPOINT> Id of the environment (endpoint) that will be used
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
Stops a stack
Usage: wrpt stack stop [OPTIONS] --endpoint <ENDPOINT> <STACK_NAME>
Arguments:
<STACK_NAME> Name of the stack
Options:
-E, --endpoint <ENDPOINT> Id of the environment (endpoint) that will be used
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
List all stacks based on the current user authorizations
Usage: wrpt stack list [OPTIONS]
Options:
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
List endpoints
Usage: wrpt endpoint list [OPTIONS]
Options:
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
List teams
Usage: wrpt team list [OPTIONS]
Options:
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
List users
Usage: wrpt user list [OPTIONS]
Options:
-l, --url <URL> URL of the Portainer instance
-A, --access-token <ACCESS_TOKEN> Access token of the Portainer instance
-v... Increase the verbosity of messages: 1 for normal output, 2 for more verbose output, 3 for debug and 4 for trace
-q, --quiet Do not output any message
--color <COLOR> When to use terminal colours [default: auto] [possible values: auto, always, never]
-h, --help Print help
WRPT is also available as a Docker image for easier usage and integration. The image is hosted on Docker Hub: wahl/wrpt.
The available tags for the Docker image can be found here.
docker pull wahl/wrpt:latest
Below is an example of using the Docker image to list stacks:
docker run -it --rm \
-e PORTAINER_URL="$PORTAINER_URL" \
-e PORTAINER_ACCESS_TOKEN="$PORTAINER_ACCESS_TOKEN" \
wahl/wrpt:latest stack list
- Replace
$PORTAINER_URL
and$PORTAINER_ACCESS_TOKEN
with your Portainer instance details.
The changelog is available in the CHANGELOG.md file.
The source code of this project is licensed under the MIT license.
See LICENSE file for reference.