webkit2png as a service..
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Webkit2png in Docker


We had to recently use webkit2png in conjunction with a nodejs project.. We also found that webkit2png is best run on Debian-based distribution. We primarily use CentOS..


This image should get you started on using webkit2png in no time! Spend less time configuring, installing X server, fonts, etc etc.

How to

  1. run ./build.sh or just docker build -t castawaylabs/webkit2png-docker.
  2. Docker builds the image..
  3. Run docker run -d -p castawaylabs/webkit2png-docker

You now have an isolated container listening to port :2222 (bound to localhost).

What next

We used fabric in conjunction with node.js to make screenshots.

Here's how: Node.js invokes fabric, fabric uses ssh to connect to the container and executes some webkit2png commands.

node -> (exec) -> fabric -> (ssh) -> webkit2png

Example fabfile

note: This may not be strictly functional.. Just an example. Remove the id if not being used..

Command: fab -f scripts/create_card.py --password webkit2png -H root@ getCard:id="cardid"


from fabric.api import run
from fabric.operations import put, get
import os

def getCard(id):
    # Get CWD
    path = os.path.dirname(os.path.realpath(__file__))
    # Upload .html file from the user
    put(path+'/'+id+'.html', '~/'+id+'.html')
    # Take a screenshot of the card
    run("DISPLAY=:99.0 webkit2png -o ~/" + id + ".png -x 500 250 "+id+".html")
    # Retrieve the card .png
    get(id+'.png', path+'/'+id+'.png')
    # cleanup: delete the .html and .png
    run("rm -f "+id+".png "+id+".html")