https://github.com/andrewannex/docker-for-vicar

Dockerfiles to run VICAR

https://github.com/andrewannex/docker-for-vicar

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.5%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

Dockerfiles to run VICAR

Basic Info
  • Host: GitHub
  • Owner: AndrewAnnex
  • License: apache-2.0
  • Language: Shell
  • Default Branch: main
  • Size: 32.2 KB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 2 years ago · Last pushed about 2 years ago
Metadata Files
Readme License

README.md

Docker for Vicar

Provides dockerfiles for VICAR

Currently attempts to provide an ubuntu container.

VICAR is installed in the /vos directory but all the commands/environment variables are already available in tcsh if you start the container

Work directory

Work within the docker container is expected to occur in the /data/ folder. Use that path for volumes or mounts to move data in and out of the docker container. For example, to use a mount for the current working directory on the host machine, use docker run with -vpwd:/data to access data in that folder within docker. Just make sure the permissions on the work directory on the host machine are permissive (777).

Calibration configuration

For certain VISOR programs (marsmap etc) VICAR needs a calibration folder for each supported mission. These files can get very large so they are not included in the docker container. To use calibration data stored on the host machine, simply store the data in a folder in some directory you want and then mount the parent directory to /calibration so it is available within the container. This is done by adding -v <HOSTFOLDER>:/calibration to the docker run command. Below we actually make it a named volume on host using the docker volume command.

This can also be inside a exclusive docker volume: ```bash docker volume create vicarcal

inside the volume copy mission cal dirs into calibration so ./m20, ./mer etc exist

now run on the host wherever

docker run -it --rm -v vicarcal:/calibration -v :/data --platform linux/amd64 -w /data/ vicar:ubuntu /bin/tcsh ```

The /calibration directory will have the various folders for each supported mission (e.g. m20,mer, etc) and the docker container has some smarts to discover those folders at runtime (see .cshrc).

Compiling VICAR

This is a bit of a work in progress still, but if you have a git repo of VICAR you are developing in on the host, you can compile within the docker container by following the steps below:

  1. add a mount for the vos directory to the docker run step like -v HOSTVICAR/vos:/vossrc
  2. Inside the container run rsync -crhv --out-format="[%t]:%o:%f" /vossrc/ $V2TOP to sync the updated files inside the container
  3. Rebuild something like MARS sub cd $MARSSUB && $V2UTIL/bldcomfiles_nounpack.csh $MARSLIB

Compiling VICAR with source on host

Say you are editing VICAR source code on a host machine and want to compile it within a docker container and then save the resulting container as an image.

you would run: bash docker run -w /data/ -v /path/to/host/src/VICAR/vos/:/vossrc --name vicar_compiled --platform linux/amd64 vicar:ubuntu 'source ~/.cshrc && update_mars'

The volume will make the host machine's VICAR source code directory available in the container and the aliases within .cshrc will take care of building the MARS programs in VICAR.

Then just use docker commit to save the final container as a new image.

bash docker container commit <sha of container> vicarprod

then you can use that container name (vicarprod) in place of the other names and run one-off commands like

```bash !docker run -t --rm -w /data/ -v vicarcal:/calibration -v ./path/to/host/data/:/data vicarprod:latest 'source ~/.cshrc && $MARSLIB/marsrelabel inp=in.vic out=out.vic -cm'

```

X11 on macOS

If using macOS please:

  1. Install XQuartz
  2. Enable "Allow Connections from network clients" in XQuartz security settings
  3. Quit XQuartz
  4. allow access from localhost xhost + 127.0.0.1
  5. Docker run with the display variable included like docker run -it --rm -e DISPLAY=host.docker.internal:0 --platform linux/amd64 -w /data/ vicar:ubuntu /bin/tcsh
  6. You can now run xvd to see a vicar GUI program

Owner

  • Name: Dr. Andrew Annex
  • Login: AndrewAnnex
  • Kind: user
  • Location: Pasadena, CA
  • Company: SETI Institute

Coder and Planetary Science PhD from Johns Hopkins University. Fmr Postdoc @ Caltech, Current Senior Science Systems Engineer @ SETI Institute

GitHub Events

Total
Last Year

Dependencies

.github/workflows/build.yml actions
  • actions/checkout v4 composite
  • docker/build-push-action 5 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v3 composite