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";
}