From c4d49272eaf597ad66de50471b8b831cc9949191 Mon Sep 17 00:00:00 2001 From: PGijsbers Date: Thu, 22 Jan 2026 15:52:33 +0100 Subject: [PATCH 1/6] Bump REST API version --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index e4e9507..e87aed3 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -58,7 +58,7 @@ services: php-api: profiles: ["all", "minio", "rest-api", "frontend", "evaluation-engine"] - image: openml/php-rest-api:v1.2.1 + image: openml/php-rest-api:v1.2.4 container_name: "openml-php-rest-api" ports: - "8080:80" # also known as /api (nginx) From d1673a0b93f5bd6b573765b86cff9cdfbe5a5ad4 Mon Sep 17 00:00:00 2001 From: PGijsbers Date: Mon, 26 Jan 2026 15:10:15 +0100 Subject: [PATCH 2/6] Update routing to same location for internal and external requests NGINX is now also listens to port 8000 on the docker network. This is an important step to being able to start these `services` and have them function as a local test server for openml-python among others. --- config/arff-to-pq-converter/Dockerfile | 2 +- config/arff-to-pq-converter/config | 2 +- config/database/update.sh | 4 ++-- config/nginx/Dockerfile | 4 ++-- config/nginx/nginx.conf | 4 ++-- config/php/.env | 7 ++++--- docker-compose.yaml | 16 +++++++++++++++- 7 files changed, 27 insertions(+), 12 deletions(-) diff --git a/config/arff-to-pq-converter/Dockerfile b/config/arff-to-pq-converter/Dockerfile index d164e90..58cc6b7 100644 --- a/config/arff-to-pq-converter/Dockerfile +++ b/config/arff-to-pq-converter/Dockerfile @@ -8,4 +8,4 @@ RUN apt update && apt upgrade -y RUN apt -y install cron RUN chmod +x /etc/cron.d/openml -RUN crontab -u unprivileged-user /etc/cron.d/openml \ No newline at end of file +RUN crontab -u unprivileged-user /etc/cron.d/openml diff --git a/config/arff-to-pq-converter/config b/config/arff-to-pq-converter/config index 9e32e2f..acbc67d 100644 --- a/config/arff-to-pq-converter/config +++ b/config/arff-to-pq-converter/config @@ -1 +1 @@ -server=http://nginx:80/api/v1/xml +server=http://nginx:8000/api/v1/xml diff --git a/config/database/update.sh b/config/database/update.sh index 0239211..b962e11 100755 --- a/config/database/update.sh +++ b/config/database/update.sh @@ -2,7 +2,7 @@ # Change the filepath of openml.file # from "https://www.openml.org/data/download/1666876/phpFsFYVN" # to "http://minio:9000/datasets/0000/0001/phpFsFYVN" -mysql -hdatabase -uroot -pok -e 'UPDATE openml.file SET filepath = CONCAT("http://minio:9000/datasets/0000/", LPAD(id, 4, "0"), "/", SUBSTRING_INDEX(filepath, "/", -1)) WHERE extension="arff";' +mysql -hdatabase -uroot -pok -e 'UPDATE openml.file SET filepath = CONCAT("http://localhost:8000/datasets/0000/", LPAD(id, 4, "0"), "/", SUBSTRING_INDEX(filepath, "/", -1)) WHERE extension="arff";' # Update openml.expdb.dataset with the same url mysql -hdatabase -uroot -pok -e 'UPDATE openml_expdb.dataset DS, openml.file FL SET DS.url = FL.filepath WHERE DS.did = FL.id;' @@ -28,4 +28,4 @@ mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'INSERT IGNORE INTO dataset_statu mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'DELETE FROM dataset_status WHERE did = 2 AND status = "deactivated";' # Temporary fix in case the database missed the kaggle table. The PHP Rest API expects the table to be there, while indexing. -mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'CREATE TABLE IF NOT EXISTS `kaggle` (`dataset_id` int(11) DEFAULT NULL, `kaggle_link` varchar(500) DEFAULT NULL)' \ No newline at end of file +mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'CREATE TABLE IF NOT EXISTS `kaggle` (`dataset_id` int(11) DEFAULT NULL, `kaggle_link` varchar(500) DEFAULT NULL)' diff --git a/config/nginx/Dockerfile b/config/nginx/Dockerfile index 7498879..7a7ab50 100644 --- a/config/nginx/Dockerfile +++ b/config/nginx/Dockerfile @@ -3,6 +3,6 @@ FROM nginx:alpine WORKDIR /etc/nginx COPY ./nginx.conf ./conf.d/default.conf COPY ./shared.conf ./shared.conf -EXPOSE 80 +EXPOSE 8000 ENTRYPOINT [ "nginx" ] -CMD [ "-g", "daemon off;" ] \ No newline at end of file +CMD [ "-g", "daemon off;" ] diff --git a/config/nginx/nginx.conf b/config/nginx/nginx.conf index 5316b1f..7dcd3d7 100644 --- a/config/nginx/nginx.conf +++ b/config/nginx/nginx.conf @@ -3,7 +3,7 @@ server { - listen 80; + listen 8000; server_name localhost; resolver 127.0.0.11; @@ -48,4 +48,4 @@ server { set $upstream_f http://frontend:5000; proxy_pass $upstream_f/$1$is_args; } -} \ No newline at end of file +} diff --git a/config/php/.env b/config/php/.env index 3a641c8..77c1058 100644 --- a/config/php/.env +++ b/config/php/.env @@ -1,6 +1,6 @@ API_KEY=AD000000000000000000000000000000 -BASE_URL=http://php-api:80/ -MINIO_URL=http://minio:9000/ +BASE_URL=http://localhost:8000/ +MINIO_URL=http://localhost:8000/minio/ DB_HOST_OPENML=database:3306 DB_HOST_EXPDB=database:3306 DB_USER_OPENML=root @@ -10,4 +10,5 @@ DB_PASS_EXPDB_WRITE=ok DB_USER_EXPDB_READ=root DB_PASS_EXPDB_READ=ok ES_URL=elasticsearch:9200 -ES_PASSWORD=default \ No newline at end of file +ES_PASSWORD=default +INDEX_ES_DURING_STARTUP=true diff --git a/docker-compose.yaml b/docker-compose.yaml index e87aed3..21f720b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -54,7 +54,11 @@ services: context: config/nginx container_name: openml-nginx ports: - - "8000:80" + - "8000:8000" + networks: + default: + ipv4_address: 172.28.0.2 + php-api: profiles: ["all", "minio", "rest-api", "frontend", "evaluation-engine"] @@ -78,6 +82,8 @@ services: start_interval: 5s timeout: 3s interval: 1m + extra_hosts: + - "localhost=172.28.0.2" email-server: profiles: ["all", "frontend"] @@ -133,6 +139,8 @@ services: depends_on: php-api: condition: service_healthy + extra_hosts: + - "localhost=172.28.0.2" croissants: profiles: ["all"] @@ -161,3 +169,9 @@ services: networks: default: name: openml-services + ipam: + driver: default + config: + - subnet: 172.28.0.0/16 + ip_range: 172.28.1.0/24 + From 456586a261183abaf6145425693aa242a1056202 Mon Sep 17 00:00:00 2001 From: PGijsbers Date: Wed, 28 Jan 2026 17:19:02 +0100 Subject: [PATCH 3/6] Update configuration to work with local database and localhost --- config/evaluation-engine/.env | 4 ++-- config/evaluation-engine/run-cron.sh | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/config/evaluation-engine/.env b/config/evaluation-engine/.env index 882ba22..17480f2 100644 --- a/config/evaluation-engine/.env +++ b/config/evaluation-engine/.env @@ -1,4 +1,4 @@ -CONFIG=api_key=AD000000000000000000000000000000;server=http://php-api:80/ +CONFIG=api_key=abc;server=http://php-api:80/ JAVA=/usr/bin/java JAR=/usr/local/lib/evaluation-engine.jar -LOG_DIR=/logs \ No newline at end of file +LOG_DIR=/logs diff --git a/config/evaluation-engine/run-cron.sh b/config/evaluation-engine/run-cron.sh index cff7a2f..004e656 100755 --- a/config/evaluation-engine/run-cron.sh +++ b/config/evaluation-engine/run-cron.sh @@ -1,6 +1,10 @@ #!/bin/sh +# We need to remove the default 127.0.0.1 localhost map to +# ensure the remap to the static nginx ip address is respected. +sed -i '/^127.0.0.1.*localhost/d' /etc/hosts + printenv | grep -v HOME >> /etc/environment touch /cron.log -/usr/sbin/crond -l 4 && tail -f /cron.log \ No newline at end of file +/usr/sbin/crond -l 4 && tail -f /cron.log From 4ab1036d2e0415b49d3826c858b8afb3075b0c37 Mon Sep 17 00:00:00 2001 From: PGijsbers Date: Thu, 29 Jan 2026 15:54:18 +0100 Subject: [PATCH 4/6] Use a more reliable way to overwrite the /etc/hosts file --- config/evaluation-engine/run-cron.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/config/evaluation-engine/run-cron.sh b/config/evaluation-engine/run-cron.sh index 004e656..5c1b03d 100755 --- a/config/evaluation-engine/run-cron.sh +++ b/config/evaluation-engine/run-cron.sh @@ -2,7 +2,13 @@ # We need to remove the default 127.0.0.1 localhost map to # ensure the remap to the static nginx ip address is respected. -sed -i '/^127.0.0.1.*localhost/d' /etc/hosts +# Updating /etc/hosts in place isn't always allowed ("Resource Busy"), +# directly overwriting it instead seems to bypass that protection. +cp /etc/hosts /etc/hosts.new +sed -i '/^127.0.0.1.*localhost/d' /etc/hosts.new +sed -i -E 's/^(::1\t)localhost (.*)$/\1\2/g' /etc/hosts.new +cat /etc/hosts.new > /etc/hosts +rm /etc/hosts.new printenv | grep -v HOME >> /etc/environment From 273d8e9afda4ec2687a21e2a0017c21015e97756 Mon Sep 17 00:00:00 2001 From: PGijsbers Date: Thu, 29 Jan 2026 17:06:49 +0100 Subject: [PATCH 5/6] Remove commented out code --- config/database/update.sh | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/config/database/update.sh b/config/database/update.sh index b962e11..5b49e33 100755 --- a/config/database/update.sh +++ b/config/database/update.sh @@ -6,26 +6,3 @@ mysql -hdatabase -uroot -pok -e 'UPDATE openml.file SET filepath = CONCAT("http: # Update openml.expdb.dataset with the same url mysql -hdatabase -uroot -pok -e 'UPDATE openml_expdb.dataset DS, openml.file FL SET DS.url = FL.filepath WHERE DS.did = FL.id;' - - - - - -# Create the data_feature_description TABLE. TODO: can we make sure this table exists already? -mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'CREATE TABLE IF NOT EXISTS `data_feature_description` ( - `did` int unsigned NOT NULL, - `index` int unsigned NOT NULL, - `uploader` mediumint unsigned NOT NULL, - `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `description_type` enum("plain", "ontology") NOT NULL, - `value` varchar(256) NOT NULL, - KEY `did` (`did`,`index`), - CONSTRAINT `data_feature_description_ibfk_1` FOREIGN KEY (`did`, `index`) REFERENCES `data_feature` (`did`, `index`) ON DELETE CASCADE ON UPDATE CASCADE -)' - -# SET dataset 1 to active (used in unittests java) -mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'INSERT IGNORE INTO dataset_status VALUES (1, "active", "2024-01-01 00:00:00", 1)' -mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'DELETE FROM dataset_status WHERE did = 2 AND status = "deactivated";' - -# Temporary fix in case the database missed the kaggle table. The PHP Rest API expects the table to be there, while indexing. -mysql -hdatabase -uroot -pok -Dopenml_expdb -e 'CREATE TABLE IF NOT EXISTS `kaggle` (`dataset_id` int(11) DEFAULT NULL, `kaggle_link` varchar(500) DEFAULT NULL)' From 7ac2879381ea4f864dfcce35b2b33fbcefd41a9c Mon Sep 17 00:00:00 2001 From: PGijsbers Date: Thu, 29 Jan 2026 17:07:40 +0100 Subject: [PATCH 6/6] Point to most recent images --- docker-compose.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 21f720b..079e643 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,6 +1,6 @@ services: database: - image: "openml/test-database:20240105" + image: "openml/test-database:v0.1.20260129" container_name: "openml-test-database" environment: MYSQL_ROOT_PASSWORD: ok @@ -114,7 +114,7 @@ services: minio: profiles: ["all", "minio", "evaluation-engine"] - image: openml/test-minio:v0.1.20241110 + image: openml/test-minio:v0.1.20260129 container_name: "openml-minio" ports: - "9000:9000" # also known as /data (nginx) @@ -165,6 +165,8 @@ services: depends_on: php-api: condition: service_healthy + extra_hosts: + - "localhost=172.28.0.2" networks: default: