If you plan to deploy a static server on google app engine, as you may have seen, you only have the option to do it with one of the predefined languages.
For example, if you have a blog deployed with Pelican which generate only static files, html, css, etc ... could be a good idea use for example an nginx server.
To implement this solution, first clone this repo
git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples cd appengine-custom-runtimes-samples/nginx
Next you could startup the container on you local machine
docker build --tag=nginx_appengine . docker run --rm -it --name nginx_example -p 8080:8080 nginx_appengine
Now open the url on the browser and can see the index page from standard nginx package
Next you need to copy all the files on output directory generated with Pelican to the docker container, so you need to modify the Dockerfile to adapt with the directory name. Change the line:
ADD www/ /usr/share/nginx/www/ with
ADD output/ /usr/share/nginx/www/
FROM nginx COPY nginx.conf /etc/nginx/nginx.conf RUN mkdir -p /var/log/app_engine RUN mkdir -p /usr/share/nginx/www/_ah && \ echo "healthy" > /usr/share/nginx/www/_ah/health # Finally, all static assets. ADD output/ /usr/share/nginx/www/ RUN chmod -R a+r /usr/share/nginx/www
Script to automate the complete deploy of Pelican blog to google app engine
#!/bin/bash # script for automated deploy of Pelican blog to gclod # Generate content source ~/.virtualenvs/pelicanblog/bin/activate pelican content # Go to nginx Dockerfile directory pushd gcloud/nginx/ # Delete old content files and copy new ones rm -rf output/* cp -R ../../output/* output/ # Deploy app to google app engine gcloud app deploy # return to project dir popd
Wait a few minutes and now you have a static pelican blog running on gcloud