{"id":21186672,"url":"https://github.com/geontech/docker-redhawk-components","last_synced_at":"2026-01-02T00:42:37.196Z","repository":{"id":48858425,"uuid":"375132339","full_name":"Geontech/docker-redhawk-components","owner":"Geontech","description":"Dockerfiles for building REDHAWK Components into Docker images","archived":false,"fork":false,"pushed_at":"2021-07-30T15:53:47.000Z","size":111,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-21T12:48:46.328Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Geontech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-08T20:10:02.000Z","updated_at":"2021-07-30T15:53:50.000Z","dependencies_parsed_at":"2022-09-03T13:53:04.339Z","dependency_job_id":null,"html_url":"https://github.com/Geontech/docker-redhawk-components","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-components","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-components/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-components/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-components/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Geontech","download_url":"https://codeload.github.com/Geontech/docker-redhawk-components/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243639557,"owners_count":20323511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T18:25:08.943Z","updated_at":"2026-01-02T00:42:37.160Z","avatar_url":"https://github.com/Geontech.png","language":"Dockerfile","readme":"# Docker REDHAWK Components\n\nREDHAWK core-framework pull [request #17](https://github.com/RedhawkSDR/core-framework/pull/17) adds support to the latest 2.2.8 baseline to run redhawk components on container orchestration clusters. This capability is provided by cluster-specific plugins. In order to use those cluster plugins, Docker images of REDHAWK components are needed. When using core-framework's Docker plugin, these images should be present on your machine; when using cluster technology plugins, they should be in the registry referenced in the configuration file ($OSSIEHOME/cluster.cfg).\n\nThe user needs to change the `code type` and `entrypoint` in order to correctly indicate to REDHAWK that they will be using a containerized version of the component. The `code type` should be changed to \"Container\" and the entrypoint to \"\u003cexecutable\u003e::\u003ccontainer-name\u003e\", where the \"container-name\" does not contain the registry portion or tag of the image name. The registry and tag are instead put into the configuration file at `$OSSIEHOME/cluster.cfg` so that they all can be concatenated together later in the code.\n\nThese changes to the spd file detailed above can be made to the spd file before compilation and install, or, if it is a build-in REDHAWK component, can be changed directly in SDRROOT (`sudo vi $SDRROOT/dom/components/rh/[ASSET]/[ASSET].spd.xml`).\n\nImages are built based on [docker-redhawk](https://github.com/Geontech/docker-redhawk) and [docker-redhawk-ubuntu](https://github.com/Geontech/docker-redhawk-ubuntu) projects. These base images pull down and bake individual RH components from GitHub into a new image designed to run that selected Component.\n\n# Pre-Built Images\nPrebuilt versions of several REDHAWK Component images are available on DockerHub.\n* [HardLimit](https://hub.docker.com/r/geontech/rh.hardlimit)\n* [SigGen](https://hub.docker.com/r/geontech/rh.siggen)\n* [agc](https://hub.docker.com/r/geontech/rh.agc)\n* [AmFmPmBasebandDemod](https://hub.docker.com/r/geontech/rh.amfmpmbasebanddemod)\n* [ArbitraryRateResampler](https://hub.docker.com/r/geontech/rh.arbitraryrateresampler)\n* [autocorrelate](https://hub.docker.com/r/geontech/rh.autocorrelate)\n* [fastfilter](https://hub.docker.com/r/geontech/rh.fastfilter)\n* [fcalc](https://hub.docker.com/r/geontech/rh.fcalc)\n* [FileWriter](https://hub.docker.com/r/geontech/rh.filewriter)\n* [psd](https://hub.docker.com/r/geontech/rh.psd)\n* [psk_soft](https://hub.docker.com/r/geontech/rh.psk_soft)\n* [RBDSDecoder](https://hub.docker.com/r/geontech/rh.rbdsdecoder)\n* [SinkSDDS](https://hub.docker.com/r/geontech/rh.sinksdds)\n* [sinksocket](https://hub.docker.com/r/geontech/rh.sinksocket)\n* [sourcesocket](https://hub.docker.com/r/geontech/rh.sourcesocket)\n* [TuneFilterDecimate](https://hub.docker.com/r/geontech/rh.tunefilterdecimate)\n* [ComponentHost](https://hub.docker.com/r/geontech/rh.componenthost) (Includes DataConverter and SourceSDDS by default)\n\nRead on if you'd like to build your own REDHAWK Component images.\n\n## Building Component Images\n\n### GitHub Core Components\n\nComponent images can be based off of either centos or ubuntu images that contain REDHAWK, provided by the [docker-redhawk](https://github.com/Geontech/docker-redhawk) and [docker-redhawk-ubuntu](https://github.com/Geontech/docker-redhawk-ubuntu) projects, respectively. Centos-based images have a smaller footprint than ubuntu components, and core-framework of version 2.2.X is compatible with Component images of the same minor release (2.2.X).\n\nIf you want to build a centos-based Component, go to ./centos and if you want a ubuntu build go to ./ubuntu. Please *NOTE* that if you want to use a GNURadio docker container that this must be built on a Ubuntu docker container at this time.\n\n### REDHAWK Asset from GitHub\nREDHAWK Asset components can be found at `https://github.com/RedhawkSDR/[ASSET].git`. These are the core components that come installed with REDHAWK. The Dockerfiles found in `centos/Dockerfiles` and `ubuntu/Dockerfiles` call out to this repo depending on the below build argument that specifies which REDHAWK Component to pull down into the image at image build time.\n\nFirst, to build a desired component into a Docker image, cd into `centos` or `ubuntu` and then run the following command, replacing [ASSET] with the *properly capitalized* name of the desired REDHAWK component as seen listed in `/var/redhawk/sdr/dom/components/`:\n\n```bash\nmake rhAsset ASSET=[ASSET]\n```\n\nFor example, to build an image for the HardLimit component installed in `/var/redhawk/sdr/dom/components/rh/HardLimit`, run the following command:\n\n```bash\nmake rhAsset ASSET=HardLimit\n```\n\nThis will create an image called `rh.hardlimit` (in all lowercase). Check this by running `docker image ls`.\n\n### Java\nBecause of the nature of the Ubuntu-based builds, they are currently unable to compile Java components. If you need a Java implementation of a Component, build it with `docker-redhawk` instead of `docker-ubuntu-redhawk.`\n\n### Component Host and Shared Library from GitHub\nShared Library type components all require a Component Host to run on. Therefore, a Component Host image is needed for the components to be baked into. The following command run from inside the `ubuntu` directory will build the Component Host image (although the centos 7 ComponentHost dockerfile builds, it does not currently work at runtime). Building the ComponentHost image *does not*, however, load any specific libraries needed for specific shared library components.\n\n```bash\ncd ./ubuntu\nmake componentHost\n```\n\nThe componentHost's Dockerfile has default arguments set for the repo URL and branch of that repo to use as the source for core-framework to pull down and build ComponentHost from. You can override those values like so:\n\n```bash\nmake componentHost repo_url='https://\u003cYourUsername\u003e:\u003cYourPassword\u003e@host/of/core-framework.git' branch_or_tag=2.2.9\n```\n\nNow that a base Component Host image with no Shared Library components loaded into it has been built, the user can now extend this docker image and add Shared Library components. Note that the Shared Library components must be loaded onto the rh.componentHost image made in the previous step instead of being their own separate images. This is because the Shared Library components are launched onto a Component Host namespace and need to be where the Component Host is to do so.\n\nThere are two Makefile targets to include a Shared Library component into a Component Host image:\n1. sharedRhAsset\n2. sharedCustom\n\nUse `sharedRhAsset` if you want to add a SharedLibrary available on GitHub at https://github.com/RedhawkSDR/[ASSET].git into your Component Host image. Use `sharedCustom` if you have a custom-made SharedLibrary type component you want to put into your ComponentHost image.\n\nUse the syntax below to add a pre-existing REDHAWK asset into your ComponentHost image where `ASSET` is the properly capitalized name of the desired SharedLibrary Component.\n```bash\nmake sharedRhAsset ASSET=[ASSET]\n```\n```bash\nmake sharedRhAsset ASSET=SourceSDDS\n```\nUse the syntax below to add your custom REDHAWK SharedLibrary Component into your ComponentHost image. **Prior to running this command**, copy your Component's directory to `./ubuntu/Dockerfiles/rhSharedLibrary/components` because the Dockerfile attempts to copy your component from this path into the image.\n\n```bash\nmake sharedCustom CUSTOM=[CUSTOM]\n```\n\nTo add *multiple* SharedLibrary type components into your ComponentHost, space separate your SharedLibraries. Also be sure to include the runtime dependencies for each SharedLibrary identified in their spd.xml files:\n\nAdd DataConverter and SourceSDDS, with dependencies, to empty ComponentHost image:\n```bash\nmake sharedRhAsset ASSET=\"dsp fftlib DataConverter SourceSDDS\"\n```\n\nYou can verify that your Components have been installed by running a container and verifying that the Components are in $SDRROOT:\n```bash\ndocker container run --rm -it rh.componenthost /bin/bash\nls -l /var/redhawk/sdr/dom/components/rh/\n```\n\n### GNURadio Component\nBuilding a GNURadio Component is a multi-step process and is only supported on Ubuntu-based builds:\n1. Install package dependencies\n2. Install [gr-redhawk-integration](https://github.com/Geontech/gr-redhawk_integration.git)\n3. Modify your GNURadio Component's flowgraph (*.grc) file to become compatible with [gr-component_converter.](https://github.com/Geontech/gr-component_converter)\n4. Convert your flowgraph file into a REDHAWK Component using gr-component_coverter\n5. Dockerize the Component\n6. Install Component to your SDRROOT\n\n#### Install the package dependencies\n\n```bash\nsudo yum install -y gnuradio gnuradio-devel\n```\n\n#### Install gr-redhawk-integration\n\n```bash\nsudo yum group install -y \"Development Tools\" \u0026\u0026 sudo yum install -y cmake cppunit cppunit-devel\ngit clone https://github.com/Geontech/gr-redhawk_integration.git\ncd gr-redhawk-integration\n```\nThen follow the build directions for \"Source or Package Manager Installations\" from [gr-redhawk-integration](https://github.com/Geontech/gr-redhawk_integration.git)\n\n### Modify your GNURadio Component's Flowgraph\nYou can find sample *.grc files in the [gr-component_converter repo.](https://github.com/Geontech/gr-component_converter/tree/master/test)\n\nEither grab a sample or grab your own ready *.grc file and move it into this project at `ubuntu/Dockerfiles/tmp-custom/\u003cyourfile\u003e.grc`\n\nOpen your *.grc file in gnuradio-companion and modify it to use `rh_source_bulkio` and `rh_sink_bulkio`\n```bash\nPYTHONPATH=/usr/local/lib64/python2.7/site-packages/ gnuradio-companion\n```\n Then File \u003e Open and browse to your path where the grc file lives and open it `ubuntu/Dockerfiles/tmp-custom/double_ref.grc`\n \n Your flowgraph should resemble the following picture below when configured correctly (double_ref flowgraph used as an example):\n ![Double Ref Example](Double_ref_Example.png)\n\n#### Convert your flowgraph into a REDHAWK Component\nGNURadio components need to be converted to REDHAWK Components and then are able to be dockerized like any other REDHAWK component. First, ensure the `*.grc` flowgraph is in `./ubuntu/Dockerfiles/tmp-custom`. The Makefile in this project run the conversion step for you, assuming your *.grc has been put in the correct path first.\n\n#### Dockerize \nThen run the following makefile command to dockerize the GNU script:\n\n```bash\nmake gnuradio GRC=[GRC]\n```\nWhere GRC is the name of your *.grc file without the .grc suffix.\n\n#### Install to SDRROOT\nOnce it is dockerized, go to `./ubuntu/Dockerfiles/tmp-custom/[GRC]` and run `./build.sh install`. This will install the component to the native host's SDRROOT. Now edit `$SDRROOT/dom/components/[GRC]/[GRC].spd.xml` to use the code type `Container` rather than `Executable`.\n\n### User Defined REDHAWK Component\nA user-defined Component is a Component that the user made in REDHAWK themselves. These components can be made in any version of REDHAWK so long as the version of REDHAWK that is used for the base in the image matches where the Component was made. This is the only Dockerfile that is provided that requires `geontech/redhawk-development` and `geontech/redhawk-runtime`. The Dockerfile provided here is just an example and supports REDHAWK Components that were made on REDHAWK 2.2.8.\n\n```bash\nmake custom CUSTOM=[CUSTOM]\n```\n\nAlso, please note that the SharedLibrary Custom components need to be made in REDHAWK 2.2.1 if you want to use them with the Component Host container provided, as the pre-built ComponetHost image is based on Docker REDHAWK Ubuntu 2.2.1. If a SharedLibrary component needs a different version of REDHAWK then the Component Host needs to be rebuilt with that REDHAWK version as its base.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeontech%2Fdocker-redhawk-components","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeontech%2Fdocker-redhawk-components","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeontech%2Fdocker-redhawk-components/lists"}