Ghost, however, does require a little bit of programming knowledge to get started. Although it is easier to set up a local ghost blog to start theming, a consistent dev environment becomes necessary as more devs work on the same theme.
Docker is an amazing tool to sync dev environments. After learning about it, we at Statusbrew decided to start moving our various applications/services to Docker.
As I started to work on the theme of this blog, I realized it would be good to create a Docker environment for Ghost theme development.
Boilerplate repository is available at https://github.com/amritsarstartups/ghost-theme-docker
# Choose the ghost version FROM ghost LABEL maintainer="rishabhmhjn" # Set the working directory. WORKDIR /var/lib/ghost RUN ghost config url http://localhost:3102 EXPOSE 2368
version: '3.7' services: ghost-theme-docker: image: ghost-theme-docker:1.0 container_name: ghost-theme-docker restart: unless-stopped build: context: . dockerfile: Dockerfile volumes: - './.tmp/data:/var/lib/ghost/content/data' - './.tmp/images:/var/lib/ghost/content/images' - './.tmp/settings:/var/lib/ghost/content/settings' - './Pico:/var/lib/ghost/content/themes/Pico' ports: - "3102:2368" environment: - NODE_ENV=development # ← This is the key to success
The volumes have been added to share data between your Docker image and the host. In this example, we are using the theme Pico.
After you have your Docker files in place, you can build and run the image using the following:
docker-compose -f "docker-compose.yml" up -d --build
Once the build is complete, you can access your new blog at http://localhost:3102/
Then you can go to http://localhost:3102/ghost to set up your new admin account. On the Ghost dashboard, click on Design in the left sidebar and activate your new theme.
You can make changes to your new theme and refresh the page to see it reflected in the website.
The key to success was defining the node environment.
environment: - NODE_ENV=development # ← This is the key to success
Happy Ghost theming!