Daniel Holmes
Jan 4, 2018 · 2 min read

In this article, I overview the backstory behind the tip and then tell you what it is and how you can use it.

The Backstory

My team uses Google App Engine extensively with our PHP applications and until recently we were using a customised version (read old version) of Google’s php-docker docker image which we used both in production as well as our local testing environments.

One of our recent requirements meant that I had to touch the php-docker image and upon the touching of the image, like a lot of old-code projects things started to break horribly. The datedness of the image caused a cascade of failures that needed to be sorted.

As a result I researched and in consultation with my team chose to move back to Google’s current php-docker image as we felt it had enough stability and features to replace our custom image. After doing a couple test runs I figured out that:

Volumes didn’t work well with the php-docker default image

The reason being, that the entrypoint.sh script that is run right before the docker image runs the web server, likes to chmod everything to some hardcore permissions. This likely means that locally you’ll have no permissions to your own files if you’re using a volume and in the case of our app, our cache folder becomes unwritable.

To solve this I worked with the GCP team to introduce a new feature into the php-docker image that allows you to skip this lockdown process if you’re doing local development.

Skipping Lockdown Locally

It’s a very simple matter to skip lockdowns locally now. Consider the following docker command which would spin up a new php-docker instance using your local directory as a volume and /app/public where your index.php file is:
docker run -v /home/daniel/Repositories/my-project:/app -e DOCUMENT_ROOT=/app/public --name my-project gcr.io/google_appengine/php:latest

To modify this command to stop the lockdown you simply add a new env var set to true: SKIP_LOCKDOWN_DOCUMENT_ROOT=true like this:
docker run -v /home/daniel/Repositories/my-project:/app -e DOCUMENT_ROOT=/app/public -e SKIP_LOCKDOWN_DOCUMENT_ROOT=true --name my-project gcr.io/google_appengine/php:latest

And that’s it! No more chmod when working locally allowing you to work in an App Engine like environment!

If this tip helped you, I’d love to hear from you. If you have any feedback or edits, just comment below.

Google Cloud Platform - Community

A collection of technical articles published or curated by Google Cloud Platform Developer Advocates. The views expressed are those of the authors and don't necessarily reflect those of Google.

Daniel Holmes

Written by

Web and E-Commerce Developer

Google Cloud Platform - Community

A collection of technical articles published or curated by Google Cloud Platform Developer Advocates. The views expressed are those of the authors and don't necessarily reflect those of Google.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade