PHP code example of teguh02 / portainer-ce
1. Go to this page and download the library: Download teguh02/portainer-ce library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
teguh02 / portainer-ce example snippets
use Teguh02\PortainerCE\PortainerClient;
// Initialize client
$portainer = new PortainerClient('http://localhost:9000');
// Authenticate with username/password
$authResponse = $portainer->auth()->authenticate('admin', 'password');
echo "JWT Token: " . $authResponse['jwt'];
// Or set token manually
$portainer->setJwtToken('your-jwt-token-here');
// List all endpoints
$endpoints = $portainer->endpoints()->list();
// Get endpoint by ID
$endpoint = $portainer->endpoints()->get(1);
// Create new endpoint
$newEndpoint = $portainer->endpoints()->create([
'name' => 'My Docker Host',
'URL' => 'tcp://docker-host:2376',
'type' => 1, // Docker
'publicURL' => 'docker-host.example.com'
]);
// Update endpoint
$portainer->endpoints()->update(1, [
'name' => 'Updated Docker Host'
]);
// Delete endpoint
$portainer->endpoints()->delete(1);
// Get Docker dashboard
$dashboard = $portainer->docker()->getDashboard(1);
// Get Docker images
$images = $portainer->docker()->getImages(1, true); // true to show all images
// Get container GPUs
$gpus = $portainer->docker()->getContainerGpus(1, 'container-id');
// List containers
$containers = $portainer->containers()->list(1, true); // true to show all containers
// Get container details
$container = $portainer->containers()->get(1, 'container-id');
// Create container
$newContainer = $portainer->containers()->create(1, [
'name' => 'my-container',
'image' => 'nginx:alpine',
'ports' => ['80/tcp' => [['HostPort' => '8080']]]
]);
// Container control
$portainer->containers()->start(1, 'container-id');
$portainer->containers()->stop(1, 'container-id');
$portainer->containers()->restart(1, 'container-id');
$portainer->containers()->pause(1, 'container-id');
$portainer->containers()->unpause(1, 'container-id');
// Get container logs
$logs = $portainer->containers()->getLogs(1, 'container-id', true, true, 0, 0, true, false, 10);
// Get container stats
$stats = $portainer->containers()->getStats(1, 'container-id');
// Execute command in container
$result = $portainer->containers()->exec(1, 'container-id', [
'command' => ['echo', 'Hello World']
]);
// Remove container
$portainer->containers()->remove(1, 'container-id', true, false);
// List stacks
$stacks = $portainer->stacks()->list();
// Deploy WordPress stack
$wordpressStack = $portainer->stacks()->createStandaloneFromString(1, [
'name' => 'wordpress-site',
'stackFileContent' => 'version: "3.8"
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password'
]);
// Deploy stack from repository
$stackFromRepo = $portainer->stacks()->createStandaloneFromRepository(1, [
'name' => 'stack-from-git',
'repositoryURL' => 'https://github.com/user/repo.git',
'composeFilePathInRepository' => 'docker-compose.yml'
]);
// Stack control
$portainer->stacks()->start(1, 1); // stack ID, endpoint ID
$portainer->stacks()->stop(1, 1);
$portainer->stacks()->update(1, ['stackFileContent' => $newCompose]);
// Get stack file
$stackFile = $portainer->stacks()->getFile(1);
// Delete stack
$portainer->stacks()->delete(1, 1);
// Get Kubernetes dashboard
$dashboard = $portainer->kubernetes()->getDashboard(1);
// List namespaces
$namespaces = $portainer->kubernetes()->getNamespaces(1);
// Get namespace by name
$namespace = $portainer->kubernetes()->getNamespace(1, 'default');
// List services
$services = $portainer->kubernetes()->getServices(1, 'default');
// List ingresses
$ingresses = $portainer->kubernetes()->getIngresses(1, 'default');
// Get events
$events = $portainer->kubernetes()->getEvents(1, 'default');
// Check RBAC status
$rbacStatus = $portainer->kubernetes()->isRbacEnabled(1);
// Edge Groups
$edgeGroups = $portainer->edgeGroups()->list();
$newGroup = $portainer->edgeGroups()->create([
'name' => 'Production Edge Group',
'description' => 'Edge group for production environments'
]);
// Edge Jobs
$edgeJobs = $portainer->edgeJobs()->list();
$newJob = $portainer->edgeJobs()->createFromString([
'name' => 'System Update',
'script' => 'apt update && apt upgrade -y',
'edgeGroups' => [1, 2]
]);
// Edge Stacks
$edgeStacks = $portainer->edgeStacks()->list();
$newStack = $portainer->edgeStacks()->createFromFile([
'name' => 'Web App Stack',
'stackFileContent' => file_get_contents('docker-compose.yml'),
'edgeGroups' => [1]
]);
// List custom templates
$templates = $portainer->customTemplates()->list();
// Create template from file
$template = $portainer->customTemplates()->createFromFile([
'title' => 'Nginx Web Server',
'description' => 'High performance web server',
'fileContent' => file_get_contents('nginx-compose.yml'),
'type' => 1 // Docker Compose
]);
// Get template file
$fileContent = $portainer->customTemplates()->getFile(1);
// Create backup
$backup = $portainer->backup()->create('backup-password');
// Restore from backup
$restore = $portainer->backup()->restore(
'backup.tar.gz',
file_get_contents('backup.tar.gz'),
'backup-password'
);
// List users
$users = $portainer->users()->list();
// Create user
$newUser = $portainer->users()->create([
'username' => 'newuser',
'password' => 'securepassword',
'role' => 2 // Standard user
]);
// Get current user
$currentUser = $portainer->users()->getCurrent();
// Update user
$portainer->users()->update(1, [
'username' => 'updateduser'
]);
// Change password
$portainer->users()->changePassword(1, 'newpassword');
// List registries
$registries = $portainer->registries()->list();
// Create registry
$registry = $portainer->registries()->create([
'name' => 'Private Registry',
'URL' => 'https://registry.example.com',
'authentication' => true,
'username' => 'registry-user',
'password' => 'registry-password'
]);
// Configure registry access
$portainer->registries()->configureAccess(1, [
'userAccessPolicies' => [
[
'userId' => 1,
'accessLevel' => 1
]
]
]);
// Get settings
$settings = $portainer->settings()->get();
// Update settings
$portainer->settings()->update([
'logoURL' => 'https://example.com/logo.png',
'blackListedLabels' => ['production', 'staging']
]);
// Get public settings
$publicSettings = $portainer->settings()->getPublic();
use Teguh02\PortainerCE\PortainerException;
try {
$endpoints = $portainer->endpoints()->list();
} catch (PortainerException $e) {
echo "Error: " . $e->getMessage();
echo "HTTP Code: " . $e->getCode();
// Get response data if available
$responseData = $e->getResponseData();
if ($responseData) {
print_r($responseData);
}
}
$authResponse = $portainer->auth()->authenticate('admin', 'password');
// Token is automatically set to client
$authResponse = $portainer->auth()->validateOAuth('oauth-code');
// Token is automatically set to client
$portainer->setJwtToken('your-jwt-token');
$portainer->setApiKey('your-api-key');
$portainer = new PortainerClient('http://localhost:9000', [
'timeout' => 60,
'verify' => false, // Disable SSL verification
'headers' => [
'User-Agent' => 'MyApp/1.0'
]
]);
if ($portainer->isAuthenticated()) {
echo "Client is authenticated";
} else {
echo "Client is not authenticated";
}