SLING-9638 - Update Starter Docker image to be based on the feature model

Add a basic docker image + documentation.
5 files changed
tree: d32a0a7bd351ef287157948d54c609c14a0dca70
  1. scripts/
  2. src/
  3. .gitignore
  4. .sling-module.json
  5. CODE_OF_CONDUCT.md
  6. CONTRIBUTING.md
  7. Dockerfile
  8. Jenkinsfile
  9. LICENSE
  10. pom.xml
  11. README.md
README.md

Apache Sling

Build Status Test Status Sonarcloud Status JavaDoc Maven Central License

Apache Sling Starter

This module is part of the Apache Sling project.

The starter project produces feature artifacts that can be launched using the Feature Launcher.

It is not meant to be a production-ready setup, more as a way to facilitate experimenting and learning Sling.

See Releasing a new version of the Sling starter for how to create a release of this module.

How to run the Sling Starter module in Standalone mode

NOTE: “mvn clean” deletes the “launcher” work directory in the project base directory. It is advisable to use a work directory outside of the project directory.

  1. Build the Sling Starter using

    mvn clean install

in the current directory.

  1. Start Sling backed by an Oak SegmentStore with

    java -jar target/dependency/org.apache.sling.feature.launcher.jar -f target/slingfeature-tmp/feature-oak_tar.json

  2. Browse Sling in:

     http://localhost:8080
    

For MongoDB support replace the launch command with

java -jar target/dependency/org.apache.sling.feature.launcher.jar -f target/slingfeature-tmp/feature-oak_mongo.json

This expects a MongoDB server to be running, search for mongodb:// in the feature files for the expected URL (currently mongodb://localhost:27017).

Extending the Sling Starter

If you wish the extend the Sling Starter but would like to keep various application-level features out, you can start with the nosample_base aggregate, which contains:

  • all the base features
  • Oak base features, without the NodeStore setup
  • No applications ( Composum, Slingshot, etc )

For instance, launching an empty Sling Starter with segment persistence can be achieved by running

java -jar target/dependency/org.apache.sling.feature.launcher.jar -f target/slingfeature-tmp/feature-nosample_base.json,target/slingfeature-tmp/feature-oak_persistence_sns.json

Your own feature files can be added to the feature list.

Docker image

This module can optionally build a Docker image. This is achieved by running a build with the -Ddocker.skip=false argument. By default, the image is built as apache/sling:snapshot. The tag can be overrriden using the docker.label Maven property.

$ mvn clean package -Ddocker.skip=false -Ddocker.label=local
$ docker run --rm -p 8080 apache/sling:local

By default the iamge launches the oak_tar aggregate. The aggregate to launch can be selected by passing an additional argument to the image, e.g.:

$ docker run --rm -p 8080 apache/sling:snapshot oak_mongo

Currently only the oak_tar and oak_mongo aggregates are supported.

For persisting the runtime data is is recommended to mount /opt/sling/launcher as a volume, for instance:

$ docker volume create sling-launcher
$ docker run --rm -p 8080 -v sling-launcher:/opt/sling/launcher apache/sling:snapshot

Helper scripts

The scripts directory contains helper scripts that will aid with local development by simplifying the use of tools external to the Sling Starter.