Class WooCommerceApplicationSpec
- All Implemented Interfaces:
ApplicationSpec, CmsSpec, DatabaseSpec
WooCommerce is an e-commerce plugin for WordPress. This specification extends the WordPress configuration with e-commerce-specific requirements.
Key Differences from WordPress:
- Higher CPU/Memory requirements for order processing
- Additional PHP extensions (gmp, sodium) for payments
- E-commerce specific cron jobs
- PCI-DSS compliance considerations
- Higher database requirements
Recommended Plugins:
- WooCommerce Stripe Gateway
- WooCommerce PayPal Payments
- WooCommerce Subscriptions
- WP Offload Media - S3 media storage
- Since:
- 3.1.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface ApplicationSpec
ApplicationSpec.OptionalPort, ApplicationSpec.SidecarContainerNested classes/interfaces inherited from interface DatabaseSpec
DatabaseSpec.DatabaseConnection, DatabaseSpec.DatabaseRequirement -
Field Summary
Fields inherited from class WordPressApplicationSpec
APPLICATION_PORT, CONTAINER_DATA_PATH, CONTAINER_USER, DEFAULT_IMAGE, EFS_DATA_PATH, EFS_PERMISSIONS, PHP_EXTENSIONS, PHP_VERSION, VOLUME_NAME -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns a unique identifier for this application.intDatabase backup retention requirements.Returns the CMS category.containerEnvironmentVariables(String fqdn, boolean sslEnabled, String authMode) Configures application-specific environment variables for the container.cronCommands(String siteUrl) Returns scheduled task commands for system cron.Database requirement for this application.intGet the recommended health check grace period for this application.static PhpRuntimeConfigReturns PhpRuntimeConfig optimized for WooCommerce.Returns OPcache configuration for PHP bytecode caching.Returns PHP-FPM pool configuration overrides.intReturns PHP memory limit in megabytes.Returns default protected paths for WooCommerce when using ALB-level OIDC.Returns recommended payment gateways that support PCI compliance.Returns required PHP extensions for this CMS.booleanReturns whether this platform requires PCI-DSS compliance.booleanReturns whether multi-site/multi-store is supported.Returns commands to install WooCommerce via WP-CLI.Methods inherited from class WordPressApplicationSpec
applicationPort, cdnAdminPaths, cdnMediaPaths, cdnStaticPaths, cliTool, cliToolInstallCommands, configureUserData, containerDataPath, containerUser, databaseEnvVars, defaultContainerImage, documentRoot, ebsDeviceName, ec2DataPath, ec2LogPaths, efsDataPath, efsPermissions, getOidcIntegration, getSupportedAuthModes, hasScheduledTasks, healthCheckPath, mediaUploadPath, multisiteMode, objectCachePlugin, phpMaxExecutionTime, phpPostMaxSize, phpUploadMaxFilesize, phpVersion, preferredCacheBackend, preferredWebServer, redisEnvVars, s3MediaPlugin, supportsCdnIntegration, supportsObjectCache, supportsOidcIntegration, supportsS3MediaStorage, useSystemCron, volumeNameMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ApplicationSpec
albSignerArnEnvVar, autoAdminPasswordEnvVar, cipherKeySecretEnvVar, cpuArchitecture, databasePasswordEnvVar, defaultOidcGroupNames, deploymentTargetEnvVar, getRecommendedAuthMode, getRecommendedAuthMode, getSupportedAuthModes, licenseKeySecretEnvVar, oidcClientSecretEnvVar, optionalPorts, publicPaths, publicTlsTrustedEnvVar, requiresCognitoGroupManagementIam, requiresSequentialDeploymentWithoutDatabase, requiresSessionStore, sessionStoreEnvVars, sidecarContainersMethods inherited from interface CmsSpec
category, cdnAssetPaths, containerCommand, defaultCpu, defaultInstanceType, defaultMemory, description, displayName, isEcommerce, requiresDatabase, supportsEc2, supportsFargateMethods inherited from interface DatabaseSpec
databaseInitScripts, databaseParameters, readReplicaCount, requiresReadReplicas
-
Constructor Details
-
WooCommerceApplicationSpec
public WooCommerceApplicationSpec()
-
-
Method Details
-
applicationId
Description copied from interface:ApplicationSpecReturns a unique identifier for this application. Used for logging, metrics, and resource naming.- Specified by:
applicationIdin interfaceApplicationSpec- Overrides:
applicationIdin classWordPressApplicationSpec- Returns:
- application identifier (e.g., "jenkins", "gitlab", "vault")
-
defaultHealthCheckGracePeriod
public int defaultHealthCheckGracePeriod()Description copied from interface:ApplicationSpecGet the recommended health check grace period for this application.The grace period is how long ECS/ALB waits before starting health checks after a container starts. Applications with longer initialization times (like GitLab) need longer grace periods.
Default values:
- Most applications: 300 seconds (5 minutes)
- GitLab: 600 seconds (10 minutes) - due to database migrations and initialization
- Other database-heavy apps may also need longer periods
- Specified by:
defaultHealthCheckGracePeriodin interfaceApplicationSpec- Overrides:
defaultHealthCheckGracePeriodin classWordPressApplicationSpec- Returns:
- recommended health check grace period in seconds
-
requiredPhpExtensions
Description copied from interface:CmsSpecReturns required PHP extensions for this CMS.Common extensions include:
- mysqli, pdo_mysql - MySQL database connectivity
- gd, imagick - Image processing
- curl - HTTP client
- mbstring - Multibyte string handling
- xml, dom - XML processing
- zip - Archive handling
- intl - Internationalization
- opcache - Bytecode caching
- redis - Redis client
- Specified by:
requiredPhpExtensionsin interfaceCmsSpec- Overrides:
requiredPhpExtensionsin classWordPressApplicationSpec- Returns:
- List of PHP extension names
-
phpMemoryLimit
public int phpMemoryLimit()Description copied from interface:CmsSpecReturns PHP memory limit in megabytes.Recommended values:
- WordPress: 256MB
- WooCommerce: 512MB
- Magento: 756MB-2GB
- Drupal: 256MB
- Specified by:
phpMemoryLimitin interfaceCmsSpec- Overrides:
phpMemoryLimitin classWordPressApplicationSpec- Returns:
- Memory limit in MB
-
phpFpmConfig
Description copied from interface:CmsSpecReturns PHP-FPM pool configuration overrides.Common settings:
- pm - Process manager (static, dynamic, ondemand)
- pm.max_children - Maximum worker processes
- pm.start_servers - Initial workers (dynamic mode)
- pm.min_spare_servers - Minimum idle workers
- pm.max_spare_servers - Maximum idle workers
- pm.max_requests - Requests before worker recycle
- Specified by:
phpFpmConfigin interfaceCmsSpec- Overrides:
phpFpmConfigin classWordPressApplicationSpec- Returns:
- Map of PHP-FPM configuration key-value pairs
-
opcacheConfig
Description copied from interface:CmsSpecReturns OPcache configuration for PHP bytecode caching.Recommended production settings:
- opcache.enable=1 - Enable OPcache
- opcache.memory_consumption=128 - Cache memory (MB)
- opcache.max_accelerated_files=10000 - Cached file limit
- opcache.revalidate_freq=60 - File check interval (seconds)
- opcache.validate_timestamps=0 - Disable for production
- Specified by:
opcacheConfigin interfaceCmsSpec- Overrides:
opcacheConfigin classWordPressApplicationSpec- Returns:
- Map of OPcache configuration key-value pairs
-
cronCommands
Description copied from interface:CmsSpecReturns scheduled task commands for system cron.Map keys are cron schedule expressions, values are commands.
Example for WordPress:
"* /15 * * * *" -> "curl -s https://example.com/wp-cron.php"
- Specified by:
cronCommandsin interfaceCmsSpec- Overrides:
cronCommandsin classWordPressApplicationSpec- Parameters:
siteUrl- The site URL for cron execution- Returns:
- Map of cron schedule to command
-
supportsMultisite
public boolean supportsMultisite()Description copied from interface:CmsSpecReturns whether multi-site/multi-store is supported.Multi-site capabilities:
- WordPress: Multisite network
- Magento: Multi-store views
- Drupal: Multi-site configuration
- PrestaShop: Multi-shop
- Specified by:
supportsMultisitein interfaceCmsSpec- Overrides:
supportsMultisitein classWordPressApplicationSpec- Returns:
- true if multi-site is available
-
cmsCategory
Description copied from interface:CmsSpecReturns the CMS category.Categories:
- "cms" - Content management (WordPress, Joomla, Drupal)
- "ecommerce" - E-commerce (WooCommerce, Magento, PrestaShop)
- Specified by:
cmsCategoryin interfaceCmsSpec- Overrides:
cmsCategoryin classWordPressApplicationSpec- Returns:
- "cms" or "ecommerce"
-
databaseRequirement
Description copied from interface:DatabaseSpecDatabase requirement for this application.- Specified by:
databaseRequirementin interfaceDatabaseSpec- Overrides:
databaseRequirementin classWordPressApplicationSpec- Returns:
- database requirement (required, optional, or none)
-
backupRetentionDays
public int backupRetentionDays()Description copied from interface:DatabaseSpecDatabase backup retention requirements.- Specified by:
backupRetentionDaysin interfaceDatabaseSpec- Overrides:
backupRetentionDaysin classWordPressApplicationSpec- Returns:
- backup retention days (1-35), default 7
-
requiresPciCompliance
public boolean requiresPciCompliance()Returns whether this platform requires PCI-DSS compliance.WooCommerce stores handle payment card data and should follow PCI-DSS requirements when processing payments directly.
- Returns:
- true if PCI-DSS compliance is required
-
recommendedPaymentGateways
Returns recommended payment gateways that support PCI compliance.These gateways handle card data off-site, reducing PCI scope:
- Stripe - PCI Level 1 Service Provider
- PayPal - PCI Level 1 Service Provider
- Square - PCI Level 1 Service Provider
- Returns:
- list of recommended payment gateway plugin slugs
-
containerEnvironmentVariables
public Map<String,String> containerEnvironmentVariables(String fqdn, boolean sslEnabled, String authMode) Description copied from interface:ApplicationSpecConfigures application-specific environment variables for the container.Applications can override this to provide custom environment variables based on deployment configuration (FQDN, SSL, authMode, etc.). The infrastructure passes the FQDN, SSL settings, and authentication mode for applications that need reverse proxy configuration or authentication-specific setup.
Example use cases:
- Jenkins: JAVA_OPTS, JENKINS_OPTS for reverse proxy configuration, skip setup wizard for application-oidc
- GitLab: GITLAB_OMNIBUS_CONFIG for external URL configuration and OIDC setup
- Vault: VAULT_ADDR for API endpoint configuration
- Specified by:
containerEnvironmentVariablesin interfaceApplicationSpec- Overrides:
containerEnvironmentVariablesin classWordPressApplicationSpec- Parameters:
fqdn- The fully qualified domain name (may be null)sslEnabled- Whether SSL is enabledauthMode- The authentication mode (may be null, e.g., "none", "alb-oidc", "application-oidc")- Returns:
- Map of environment variable key-value pairs (never null, may be empty)
-
wooCommerceInstallCommands
-
getPhpConfig
Returns PhpRuntimeConfig optimized for WooCommerce.- Returns:
- PHP runtime configuration for e-commerce
-
protectedPaths
Returns default protected paths for WooCommerce when using ALB-level OIDC.WooCommerce inherits WordPress admin paths plus e-commerce specific:
- /wp-admin/* - WordPress admin dashboard (includes WooCommerce admin)
- /wp-login.php - Login page
- Returns:
- list of WooCommerce administrative paths requiring authentication
- See Also:
-