NodeJS application that deploys/updates portainer stack with new version of containers.
export PORTAINER_API="http://localhost:9000/api"
# Development
npm run start:dev
# Production
npm run start
# Development run commands
DISABLE_AUTH=1 PORTAINER_API=http://localhost:9000/api npm run start:dev
PORTAINER_API=http://localhost:9000/api npm run start:dev
docker build -t <tag> .
docker create \
--name=deployer \
-e PORTAINER_API="http://localhost:9000/api" \
-e TZ=Europe/Ljubljana \
-p 3000:3000 \
--restart unless-stopped \
slocomptech/portainer-deployer
version: "2"
services:
portainer-deployer:
image: slocomptech/portainer-deployer
container_name: portainer-deployer
environment:
- PORTAINER_API="http://localhost:9000/api"
- TZ=Europe/Ljubljana
ports:
- "3000:3000"
restart: unless-stopped
Parameter | Function |
---|---|
-e DISABLE_AUTH=true |
Disable authentication |
-e PORTAINER_API=http(s)://<url>/api |
Portainer API URL (required) |
-e PORTAINER_USER=<username> |
Portainer (default) username |
-e PORTAINER_PASS=<password> |
Portainer (default) password |
-e CONFIG=<path to config file> |
Custom config file path. |
-e LOG_LEVEL=verbose |
Enable app output see docs |
-e FAIL_MODE=hard |
What to do if services fail. |
-e PUID=1000 |
for UserID - see below for explanation |
-e PGID=1000 |
for GroupID - see below for explanation |
-e SKIP_APP=true |
Don't start app, useful for development. |
-e TZ=Europe/London |
Specify a timezone to use EG Europe/London. |
-v <path>:/config |
All the config files reside here. |
-p 3000:3000 |
Expose port |
Request metod is POST and depends on handler, but in general request looks like
{
"handler": "default", /* Handler name, if omitted default is 'default' */
"data": {
/* Data send to handler */
}
}
Authenitcation of app is linked to portainer API login, so it hasn't any internal authentication mechanisms. But there are multiple ways of authentication:
- Header
Authorization: Bearer <Portainer auth token>
- Header
Authorization: Basic <base64 encoded user:pass>
- No headers, set
PORTAINER_USER
,PORTAINER_PASS
environment variables.
Default handler changes value of existing environment variables of stack and triggers redeploy.
{
"data": {
"stack": "<stack name>",
"env": {
"<varname>": "<value>"
}
}
}