Skip to content

Conversation

@htafer
Copy link

@htafer htafer commented Oct 16, 2025

Problem

  • WAR file downloads no longer work (vowl.visualdataweb.org domain issues)
  • Original Dockerfile uses deprecated Java 8 Alpine images
  • No integrated OWL2VOWL converter for Docker users
  • Docker setup doesn't work with Podman

Solution

This PR modernizes the Docker setup with:

Changes

  • Multi-stage builds from source - No dependency on external WAR downloads
  • Updated base images - Java 11/17 Temurin (Java 8 EOL)
  • Combined Dockerfile - All-in-one container with WebVOWL + OWL2VOWL + nginx
  • Separate service option - Individual Dockerfiles for WebVOWL and OWL2VOWL
  • Podman compatibility - Works with both Docker and Podman
  • Comprehensive docs - PODMAN_SETUP.md, QUICK_START.md

Files Added

  • Dockerfile.combined - Recommended all-in-one setup
  • Dockerfile.owl2vowl - Standalone OWL2VOWL converter
  • nginx-combined.conf, supervisord.conf - Config files for combined image
  • .dockerignore - Optimize build context
  • PODMAN_SETUP.md, QUICK_START.md - Documentation

Files Modified

  • Dockerfile - Modernized with Java 17, multi-stage build
  • docker-compose.yml - Updated for separate services
  • README.md - Added Docker/Podman instructions

Testing

✅ Tested with Podman 4.x on Ubuntu
✅ WebVOWL frontend accessible
✅ OWL2VOWL converter functional (IRI loading works)
✅ All services start and communicate correctly

Usage

# Quick start (recommended)
docker build -t webvowl:combined -f Dockerfile.combined .
docker run -d -p 8080:80 webvowl:combined

- Replace WAR downloads with multi-stage builds from GitHub source
- Update from Java 8 Alpine to Java 11/17 Temurin
- Add Dockerfile.combined: all-in-one image with nginx reverse proxy
- Add Dockerfile.owl2vowl: dedicated OWL2VOWL converter service
- Add comprehensive documentation (PODMAN_SETUP.md, QUICK_START.md)
- Podman and Docker compatible
- Fixes broken WAR file downloads from vowl.visualdataweb.org

This allows users to run WebVOWL with OWL2VOWL converter without
depending on external file downloads that are no longer available.
container_name: webvowl
ports:
- "8080:8080"
networks:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra network is not necessary. compose creates one as default per compose project

# Use tomcat java 8 alpine as base image
FROM tomcat:9-jre8-alpine
# Build stage: Build WebVOWL from source since WAR downloads are no longer available
FROM docker.io/library/node:18-alpine AS builder
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

newer node versions probably not work because of the old project?

# Option 2: Use JRE 17 LTS on Temurin (recommended, modern Java - ~250MB)
FROM docker.io/library/tomcat:9-jre17-temurin-noble

# Option 3: Use JRE 21 LTS on Temurin (latest LTS - ~250MB)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not this?


# Runtime stage: Tomcat server
# Option 1: Use JRE 8 Alpine (smaller but older Java - ~100MB)
# FROM docker.io/library/tomcat:9-jre8-alpine
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If tested commented options are not necessary

@@ -0,0 +1,53 @@
###############
# OWL2VOWL #
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what purpose do you see in keeping both variants? combined vs single one images?
If splitted owl2vowl has to be in its one repository

@@ -0,0 +1,226 @@
# WebVOWL with Podman Setup
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to specific and podman is not commonly used. It should be better done with docker as podman should work as direct replacement to docker.

@@ -0,0 +1,141 @@
# WebVOWL + OWL2VOWL Quick Start Guide
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is not needed. Everything should be done in the README itself.

All Docker commands work with Podman. Simply replace `docker` with `podman`:

```bash
podman build -t webvowl:combined -f Dockerfile.combined .
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

again no podman

@htafer
Copy link
Author

htafer commented Oct 17, 2025

Thank you for your feedback, I will stick to docker

@htafer htafer closed this Oct 17, 2025
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.

3 participants