Pelican blog on nginx with google app engine
Posted on Sat 18 August 2018 in Tutorials • 2 min read
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