Container fails to boot with admin_php no such file or directory

Overview

If you notice a container in a restart loop with the following error:

/etc/my_init.d/00-entrypoint.sh: line 32: /usr/local/lsws/admin/fcgi-bin/admin_php: No such file or directory
*** /etc/my_init.d/00-entrypoint.sh failed with status 127

Cause

This is caused by an interruption to the OLS upgrade process.

Our OpenLiteSpeed PHP Image includes the most recent version of OLS inside the image, and on each boot, it compares the currently stored version in the config directory, with the one in the image. If the one in the image is newer then in the volume, it will perform an upgrade on boot.

In this situation, that upgrade process was interrupted and left the volume is an incomplete state, causing the error.

Solution

You have two ways to resolve this, both depend on what level of access you have.

User

As a user, your best option is to deploy a brand new container in the same project, and use the SSH bastion container to rsync your php site from one container to the other, move domains to the new container, and delete the old one.

Admin

As an admin user with host access, your option is a bit easier. All you need to do is locate the OLS config volume on the host, and completely empty it. On boot, the container will treat it as a fresh boot and copy over a fresh installation of OLS and boot normally.

You can find the litespeed directory on the host by inspecting the container and looking for the /usr/local/lsws volume. You may also locate it by viewing the config volume in the ComputeStacks administrator, which will give you the full volume name (UUID). The volume path will be:

/var/lib/docker/volumes/UUID/_data