The Beginning, Ghost setup with Docker

I thought setting up Ghost with Docker is simple and straight forward. Just start the container and write your first post. Let's begin by starting our container:

$ docker run --name some-ghost -v /path/to/ghost/blog:/var/lib/ghost ghost

And it's done, right? Nope.
The container starts in development mode, URLs are pointing to localhost, why?

A quick look into config.js shows that there is also a production config, but how to enable it? Google...

https://github.com/docker-library/ghost/issues/2
tl;dr; Just change the node.js ENV

-e NODE_ENV=production

Alright, that's simple and node.js like. But why don't you mention it in the description?

But wait, it still does not work?

ERROR: Unable to access Ghost's content path:  
  EACCES, permission denied '/usr/src/ghost/content/apps/snigv548ownvs4'

Check that the content path exists and file system permissions are correct.  
Help and documentation can be found at http://support.ghost.org.  

On further reading the issue above, it seems like I'm not the only one facing this problem.

Adding this line to your production config solves it.

paths: {  
  contentPath: path.join(process.env.GHOST_CONTENT, '/')
}

Now my blog is up and running, but I could save some time if:

  • Docker README would mention NODE_ENV
  • Path setting would be there by default