Nightly builds of Ghost from main, for testing upcoming changes. Not for production use.
1.5K
Nightly builds of Ghost from the main branch of TryGhost/Ghost, for trying out upcoming features and testing themes, integrations and migrations ahead of a release.
Warning
Not for production use. These are untested builds of the main branch. They can include database migrations that change before the next release, with no supported way to roll back. Use a throwaway database.
For production, use the official Ghost image.
latest: the most recent nightlyYYYYMMDD: the build from that date (UTC), for pinning or rolling backBuilds run daily at 03:00 UTC from the newest main commit that passed CI. Each image is smoke-tested before it's published. The same images are on GHCR as ghcr.io/tryghost/ghost:nightly and ghcr.io/tryghost/ghost:nightly-YYYYMMDD.
Platforms: linux/amd64, linux/arm64.
This image matches the next variant of the official image: Ghost is installed in /home/ghost, and content lives in the /home/ghost/content volume.
services:
ghost:
image: ghost/nightly:latest
restart: unless-stopped
ports:
- 2368:2368
environment:
url: http://localhost:2368
database__client: mysql
database__connection__host: db
database__connection__user: root
database__connection__password: example
database__connection__database: ghost
volumes:
- ghost:/home/ghost/content
depends_on:
- db
db:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db:/var/lib/mysql
volumes:
ghost:
db:
Any Ghost config option can be set with an environment variable, using __ for nesting (for example mail__transport). See Ghost's configuration docs.
The container starts as root. The entrypoint gives the content volume to the ghost user (uid 1000), fills an empty volume with the default themes, and then runs Ghost as ghost. To skip that step, run with --user 1000:1000 and make sure the volume is writable by that uid.
ghost imageThe official image (before next) installs Ghost in /var/lib/ghost. Point your content mount at /home/ghost/content instead. If the container finds Ghost content at the old path, it refuses to start rather than booting an empty site.
Dockerfile.production (selfhost target)docker/selfhost/Content type
Image
Digest
sha256:dc72345ee…
Size
135.3 MB
Last updated
about 6 hours ago
docker pull ghost/nightly