Fixing Podlove Cron Jobs in WordPress Docker Containers
While we were publishing the first episode of our Podcast, I came across some issues with WordPress, though.
First of all: We are using the Podlove Publisher and therefore WordPress to host our Podcast.
Unfortunately, I encountered an issue with the required cron jobs. The Podlove WP Cron Diagnostics showed, that there was nothing set up.
PHP ConstantALTERNATE_WP_CRON: not definde
DISABLE_WP_CRON: not defined
As a result, any attempt to connect to running cron jobs failed. After checking Google I found a helpful hint here. All you have to do is to add
define('ALTERNATE_WP_CRON', true);
in your wp-config.php
.
And here the fun begins. I am using the official WordPress Docker container and Ansible to deploy it on my servers. So you need a way to add this line to a wp-config.php file on your server using an Ansible script… I think you get it. Some years ago, you would have simply logged into your server, changed the line in the file and eventually restart your webserver.
Now everything becomes more difficult. First of all I try such things manually. To do so (as well as to verify the changes on the server) I bash into the running WordPress container
docker exec -i -t {containerId} /bin/bash
just to realize there is neither vim or even vi on this container available. Also less did not work. At least I was able to read the file using more.
Again I looked for some hints and found a great hint on Stackoverflow:
You can make use of the
WORDPRESS_CONFIG_EXTRA
environment variable to define any other config values in thewp-config.php
file.
With this environmental variable, you can literally add anything to your wp-config.php
file in the prebuild WordPress image without fiddling with own containers and so on.
environment: WORDPRESS_DB_HOST: db:1234
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: topsecret
WORDPRESS_CONFIG_EXTRA: |
define('ALTERNATE_WP_CRON', true);
define( 'DISABLE_WP_CRON', true );
Looking into your wp-config.php now should reveal the following line:
// WORDPRESS_CONFIG_EXTRA
define('ALTERNATE_WP_CRON', true);
define( 'DISABLE_WP_CRON', true );
Also running the diagnostics in the Podlove plugin now should come up with some better news: