Skip to content

Comments

Add Docker Compose support and upgrade ExifTool to 13.50#419

Open
guinslym wants to merge 4 commits intoharvard-lts:mainfrom
guinslym:docker-compose
Open

Add Docker Compose support and upgrade ExifTool to 13.50#419
guinslym wants to merge 4 commits intoharvard-lts:mainfrom
guinslym:docker-compose

Conversation

@guinslym
Copy link

Docker Compose Integration for FITS

Summary

This PR introduces Docker Compose as the primary way to build and run FITS, replacing the previous docker build / docker run workflow.

It also:

  • Bundles a sample image for a ready-to-go first run experience
  • Upgrades ExifTool to the latest production release

Changes

  • docker-compose.yml
    Defines two services:

    • fits — run FITS on files
    • test — run the Maven test suite in a container
  • docker/Dockerfile-compose
    Multi-stage Dockerfile:

    • Stage 1 compiles FITS from source using Maven (no Maven required on the host)
    • Stage 2 builds a clean runtime image with all dependencies (ExifTool, MediaInfo, jpylyzer, etc.)
  • .dockerignore
    Excludes .git, target/, and work/ from the Docker build context to keep image builds fast

  • work/sample_exif_wikimedia_ant.jpg
    Sample image committed to the repo so users can run FITS immediately after cloning without needing their own file

  • README.md
    Docker Installation section rewritten to use:

    • docker compose build
    • docker compose run
      Includes a ready-to-go example command using the sample image
  • tools.properties
    ExifTool upgraded from 13.3613.50 (production release)

  • docs_readme.md
    Fix missing newline at end of file


How to Test

git clone https://github.com/harvard-lts/fits.git
cd fits
docker compose build fits
docker compose run --rm fits -i /work/sample_exif_wikimedia_ant.jpg

- Add docker-compose.yml with fits and test services
- Add docker/Dockerfile-compose: multi-stage build (Maven build + runtime image)
- Add .dockerignore to keep build context lean
- Add work/sample_exif_wikimedia_ant.jpg as a ready-to-go test file
- Update README: replace docker run instructions with docker compose equivalents,
  add ready-to-go example using the sample image
- Upgrade ExifTool from 13.36 to 13.50
- Fix missing newline at end of docs_readme.md
- Restore original Docker installation section in README and add a
  separate Docker Compose section, so release-artifact users are
  not required to clone the repo or use the work/ directory
- Replace sed-based platform hack in Dockerfile-compose with a proper
  fits.install.platforms property in ToolInstaller.java and
  tool-installer-pom.xml; pass -Dfits.install.platforms=linux at
  build time instead of mutating source files
- Add work/ to .gitignore since Docker Compose auto-creates it at
  runtime; remove committed work/ files
Add platform checks around Linux-specific installs in installExiftool(),
installMediaInfo(), and installJpylyzer() so that the linux value in
fits.install.platforms actually gates those installs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants