blob: 777a9392ca73c9442844b3a1915b4a73f0f37763 [file] [view]
GitHub repository: https://github.com/apache/incubator-sdap-ningester
# How to run this image
The basic command is:
docker run -it --rm -v <absolute path to config directory on host>:/config/ -v <absolute path to granule on host>:/data/<granule name> sdap/ningester <profiles to activate>
Replacing the following:
- `<absolute path to config directory on host>` should be the absolute path on the host to the configuration for the job
- `<absolute path to granule on host>` should be the absolute path on the host to the granule intended for ingestion
- `<granule name>` should be the filename of the granule
- `<profiles to activate>` is a comma-separated list of profiles to activate
The [ExampleJob](example_config/ExampleJob.yml) file shows an example Job configuration that would ingest an AVHRR granule.
## Configuration
Upon running the image, the ningester job will scan the `/config` directory for any files that end with the `.yml` extension. Specifically it uses find:
find /config -name "*.yml" | awk -vORS=, '{ print $1 }'
Therefore, to configure the job, mount your configuration files into `/config` using a Docker volume. Alternatively, configuration is loaded via Spring Boot's [relaxed binding rules](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-relaxed-binding).
So, you can also configure the job through environment variables where each 'level' of the yaml file gets replaced by an '_'.
For example, given a configuration option in yaml that looks like:
ningester:
tile_slicer: sliceFileByTilesDesired
sliceFileByTilesDesired:
tilesDesired: 1296
timeDimension: time
dimensions:
- lat
- lon
These could be replaced with the following corresponding Environment variables:
NINGESTER_TILE_SLICER=sliceFileByTilesDesired
NINGESTER_SLICE_FILE_BY_TILES_DESIRED_TILES_DESIRED=1296
NINGESTER_SLICE_FILE_BY_TILES_DESIRED_TIME_DIMENSION=time
NINGESTER_SLICE_FILE_BY_TILES_DESIRED_DIMENSIONS[0]=lat
NINGESTER_SLICE_FILE_BY_TILES_DESIRED_DIMENSIONS[1]=lon
However, because ningester has a lot of configuration options, it is recommended to use the yaml option.
## Data
Ningester is designed to ingest 1 granule per run. It looks for the granule to ingest in the `/data` directory of the container image.
Use a Docker volume to mount your data into `/data`.
The image relies on this command to find the first file in `/data` and it will use that file for ingestion:
find /data -type f -print -quit
## Examples
A few example commands are shared here.
### Docker for Mac
The [ConnectionSettings-DockerForMac](example_config/ConnectionSettings-DockerForMac.yml) file shows an example of how to configure the connection settings
when running this job under Docker for Mac with Solr and Cassandra running on your host Mac.
Replace `<path to ningester>` with the path on your local workstation to the ningester github project.
docker run -it --rm -v <path to ningester>/docker/example_config/:/config/ -v <path to ningester>/src/test/resources/granules/20050101120000-NCEI-L4_GHRSST-SSTblend-AVHRR_OI-GLOB-v02.0-fv02.0.nc:/data/20050101120000-NCEI-L4_GHRSST-SSTblend-AVHRR_OI-GLOB-v02.0-fv02.0.nc.nc sdap/ningester dockermachost,solr,cassandra