From 69c3ce1ec8320ce1a7514edc7a0127245c3f7d04 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Tue, 19 May 2026 14:06:50 -0500 Subject: [PATCH 1/9] Update ruby version --- images/web/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/images/web/Dockerfile b/images/web/Dockerfile index 92032c7b..cdf441ce 100644 --- a/images/web/Dockerfile +++ b/images/web/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3-slim AS builder +FROM ruby:3.4-slim AS builder ENV DEBIAN_FRONTEND=noninteractive \ workdir=/var/www \ @@ -24,7 +24,7 @@ RUN apt-get update && \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Download OHM Website using gitsha, faster than cloning -ENV OPENHISTORICALMAP_WEBSITE_GITSHA=8690db86e4e5b51c4d59c1e2ec273bb2f8471189 +ENV OPENHISTORICALMAP_WEBSITE_GITSHA=6dc7d515a60b70a27f90e0e8d333df645e37e9a8 ENV OHM_WEBSITE_URL=https://github.com/OpenHistoricalMap/ohm-website/archive/${OPENHISTORICALMAP_WEBSITE_GITSHA}.zip RUN rm -rf $workdir/* && curl -fsSL $OHM_WEBSITE_URL -o /tmp/ohm-website.zip && \ unzip /tmp/ohm-website.zip -d /tmp && \ @@ -77,7 +77,7 @@ RUN git clone https://github.com/OpenHistoricalMap/leaflet-ohm-timeslider-v2.git cp leaflet-ohm-timeslider.* $workdir/app/assets/stylesheets/ && \ cp assets/* $workdir/app/assets/images/ -FROM ruby:3.3-slim +FROM ruby:3.4-slim ENV DEBIAN_FRONTEND=noninteractive \ workdir=/var/www \ From c3bdbaaecbb2dee4cec2c0ef2d7f894c6bef0218 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Tue, 19 May 2026 14:34:27 -0500 Subject: [PATCH 2/9] Update libs --- images/web/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/web/Dockerfile b/images/web/Dockerfile index cdf441ce..6447bd1b 100644 --- a/images/web/Dockerfile +++ b/images/web/Dockerfile @@ -14,7 +14,7 @@ WORKDIR $workdir RUN apt-get update && \ apt-get install -y --no-install-recommends \ git curl gnupg build-essential \ - libarchive-dev zlib1g-dev libcurl4-openssl-dev \ + libarchive-dev zlib1g-dev libcurl4-openssl-dev libgd-dev \ apache2 apache2-dev libapache2-mod-fcgid libapr1-dev libaprutil1-dev \ postgresql-client libpq-dev libxml2-dev libyaml-dev \ pngcrush optipng advancecomp pngquant jhead jpegoptim gifsicle libjpeg-progs unzip\ From 3ce157447a4c89390ded48651fec517b75b7a5f9 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Tue, 19 May 2026 15:27:01 -0500 Subject: [PATCH 3/9] Turn to postgis the database and udpate ohm-website gitsha --- images/db/Dockerfile | 6 +++--- images/web/Dockerfile | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/images/db/Dockerfile b/images/db/Dockerfile index ed35e853..8593fac4 100644 --- a/images/db/Dockerfile +++ b/images/db/Dockerfile @@ -1,5 +1,5 @@ -# Stage 1: Compilar el plugin para PostgreSQL 17 -FROM postgres:17 AS builder +# Stage 1: Compilar el plugin para PostgreSQL 17 con PostGIS +FROM postgis/postgis:17-3.5 AS builder # Instalar dependencias de compilación RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -27,7 +27,7 @@ RUN git clone https://github.com/openstreetmap/osmdbt.git /tmp/osmdbt && \ cmake .. && \ make -FROM postgres:17 +FROM postgis/postgis:17-3.5 COPY --from=builder /tmp/osmdbt/postgresql-plugin/build/osm-logical.so /usr/lib/postgresql/17/lib/osm-logical.so diff --git a/images/web/Dockerfile b/images/web/Dockerfile index 6447bd1b..035e7418 100644 --- a/images/web/Dockerfile +++ b/images/web/Dockerfile @@ -24,7 +24,7 @@ RUN apt-get update && \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Download OHM Website using gitsha, faster than cloning -ENV OPENHISTORICALMAP_WEBSITE_GITSHA=6dc7d515a60b70a27f90e0e8d333df645e37e9a8 +ENV OPENHISTORICALMAP_WEBSITE_GITSHA=6b4b282580a8e58f5d61a63f68a87e970e28608c ENV OHM_WEBSITE_URL=https://github.com/OpenHistoricalMap/ohm-website/archive/${OPENHISTORICALMAP_WEBSITE_GITSHA}.zip RUN rm -rf $workdir/* && curl -fsSL $OHM_WEBSITE_URL -o /tmp/ohm-website.zip && \ unzip /tmp/ohm-website.zip -d /tmp && \ From 97cc295d5a0cf9593d6cbf7a4518b7c3d304cb36 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Tue, 19 May 2026 20:14:53 -0500 Subject: [PATCH 4/9] Update ruby version and module --- images/web/Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/images/web/Dockerfile b/images/web/Dockerfile index 035e7418..d388d205 100644 --- a/images/web/Dockerfile +++ b/images/web/Dockerfile @@ -31,7 +31,7 @@ RUN rm -rf $workdir/* && curl -fsSL $OHM_WEBSITE_URL -o /tmp/ohm-website.zip && mv /tmp/ohm-website-$OPENHISTORICALMAP_WEBSITE_GITSHA/* $workdir && \ rm -rf /tmp/* -RUN gem install bundler && \ +RUN gem install bundler -v 2.6.9 --no-document && \ bundle install && \ yarn install && \ bundle exec rake yarn:install @@ -152,6 +152,10 @@ RUN a2enmod headers setenvif proxy proxy_http proxy_fcgi fcgid rewrite lbmethod_ echo "ServerName localhost" >> /etc/apache2/apache2.conf && \ apache2ctl configtest +# Install bundler 2.6.9 — supports default gem replacement, avoids Passenger preloader Gem::LoadError. +RUN gem install bundler -v 2.6.9 --no-document + + RUN echo '#!/bin/bash\nexec /usr/local/bin/ruby --yjit --yjit-exec-mem-size=64 "$@"' > /usr/local/bin/ruby_yjit && \ chmod +x /usr/local/bin/ruby_yjit From ed7c3e253d80360e5ec28d4392e1cc07b8084524 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Wed, 20 May 2026 10:54:14 -0500 Subject: [PATCH 5/9] Test ohm-website-patches to fix issue Remove ohm website patches Remove starage file from the test --- compose/web.yml | 26 +++++++++++++++++++++++--- images/web/start.sh | 6 ++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/compose/web.yml b/compose/web.yml index 32c48a84..9d30a21e 100644 --- a/compose/web.yml +++ b/compose/web.yml @@ -1,5 +1,6 @@ services: db: + container_name: db platform: linux/amd64 image: ohm-db:v2 build: @@ -14,18 +15,18 @@ services: - web_network web: + container_name: web image: ohm-web:v1 build: context: ./../images/web dockerfile: Dockerfile volumes: - - ./../../ohm-website/:/var/www/ - - ./../images/web/config/settings.yml:/tmp/settings.yml:rw - ./../images/web/start.sh:/var/www/start.sh + - ./../../ohm-website-patches:/opt/ohm-patches:ro env_file: - ./../envs/.env.web ports: - - '3000:3000' + - '3000:80' networks: - web_network depends_on: @@ -33,12 +34,31 @@ services: - memcached memcached: + container_name: memcached image: memcached:latest ports: - '11211:11211' networks: - web_network + # cgimap: + # container_name: cgimap + # image: ohm-cgimap:v1 + # build: + # context: ./../images/cgimap + # dockerfile: Dockerfile + # env_file: + # - ./../envs/.env.web + # environment: + # MEMCACHE_SERVER: memcached:11211 + # # ports: + # # - '8000:8000' + # networks: + # - web_network + # depends_on: + # - db + # - memcached + networks: web_network: driver: bridge diff --git a/images/web/start.sh b/images/web/start.sh index 21b8091c..57ae8872 100755 --- a/images/web/start.sh +++ b/images/web/start.sh @@ -3,6 +3,12 @@ workdir="/var/www" export RAILS_ENV=production setup_env_vars() { + #### Apply OHM website overlay patches (if repo mounted) + if [ -d /opt/ohm-patches/overlays ]; then + echo "Applying OHM website patches from /opt/ohm-patches..." + /opt/ohm-patches/scripts/apply.sh "$workdir" + fi + #### Setting up the production database cat < "$workdir/config/database.yml" production: From ae1891b3356484dc1b1c8e687f2bc08e3626ad87 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Fri, 22 May 2026 16:48:20 -0500 Subject: [PATCH 6/9] Align web image with upstream Bundler 4 --- compose/web.yml | 1 - images/web/Dockerfile | 9 +++++---- images/web/config/production.conf | 3 +++ images/web/start.sh | 6 ------ 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/compose/web.yml b/compose/web.yml index 9d30a21e..59bc27c4 100644 --- a/compose/web.yml +++ b/compose/web.yml @@ -22,7 +22,6 @@ services: dockerfile: Dockerfile volumes: - ./../images/web/start.sh:/var/www/start.sh - - ./../../ohm-website-patches:/opt/ohm-patches:ro env_file: - ./../envs/.env.web ports: diff --git a/images/web/Dockerfile b/images/web/Dockerfile index d388d205..1213101b 100644 --- a/images/web/Dockerfile +++ b/images/web/Dockerfile @@ -31,7 +31,7 @@ RUN rm -rf $workdir/* && curl -fsSL $OHM_WEBSITE_URL -o /tmp/ohm-website.zip && mv /tmp/ohm-website-$OPENHISTORICALMAP_WEBSITE_GITSHA/* $workdir && \ rm -rf /tmp/* -RUN gem install bundler -v 2.6.9 --no-document && \ +RUN gem install bundler -v 4.0.11 --no-document && \ bundle install && \ yarn install && \ bundle exec rake yarn:install @@ -116,6 +116,7 @@ RUN BUILD_DEPS=" \ gifsicle \ postgresql-client \ curl \ + git \ libvips \ nodejs \ \ @@ -123,7 +124,7 @@ RUN BUILD_DEPS=" \ \ # Install Passenger as a gem and compile the Apache module \ - && gem install passenger --no-document \ + && gem install passenger -v 6.1.3 --no-document \ && yes | passenger-install-apache2-module --auto --languages ruby \ && passenger-config validate-install --auto \ \ @@ -152,8 +153,8 @@ RUN a2enmod headers setenvif proxy proxy_http proxy_fcgi fcgid rewrite lbmethod_ echo "ServerName localhost" >> /etc/apache2/apache2.conf && \ apache2ctl configtest -# Install bundler 2.6.9 — supports default gem replacement, avoids Passenger preloader Gem::LoadError. -RUN gem install bundler -v 2.6.9 --no-document +# Install bundler matching ohm-website Gemfile.lock to avoid Passenger preloader Gem::LoadError. +RUN gem install bundler -v 4.0.11 --no-document RUN echo '#!/bin/bash\nexec /usr/local/bin/ruby --yjit --yjit-exec-mem-size=64 "$@"' > /usr/local/bin/ruby_yjit && \ diff --git a/images/web/config/production.conf b/images/web/config/production.conf index 87be1d2e..bb1260b4 100644 --- a/images/web/config/production.conf +++ b/images/web/config/production.conf @@ -4,6 +4,9 @@ DocumentRoot /var/www/public PassengerAppEnv production PassengerRuby /usr/local/bin/ruby + # Load Bundler before Ruby preloads default gems so Gemfile.lock pins + # (e.g. stringio 3.2.0) win over Ruby-bundled defaults like 3.1.2. + PassengerPreloadBundler on RewriteEngine On # Redirect to HTTPS diff --git a/images/web/start.sh b/images/web/start.sh index 57ae8872..21b8091c 100755 --- a/images/web/start.sh +++ b/images/web/start.sh @@ -3,12 +3,6 @@ workdir="/var/www" export RAILS_ENV=production setup_env_vars() { - #### Apply OHM website overlay patches (if repo mounted) - if [ -d /opt/ohm-patches/overlays ]; then - echo "Applying OHM website patches from /opt/ohm-patches..." - /opt/ohm-patches/scripts/apply.sh "$workdir" - fi - #### Setting up the production database cat < "$workdir/config/database.yml" production: From fc1d4f0c3c36e42f091fcc1eb1f20d0170272df3 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Mon, 25 May 2026 14:20:32 -0500 Subject: [PATCH 7/9] Switch db image to postgres:17 base to fix glibc mismatch --- images/db/Dockerfile | 14 +++++++++----- values.staging.template.yaml | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/images/db/Dockerfile b/images/db/Dockerfile index 8593fac4..b6fd6376 100644 --- a/images/db/Dockerfile +++ b/images/db/Dockerfile @@ -1,7 +1,6 @@ -# Stage 1: Compilar el plugin para PostgreSQL 17 con PostGIS -FROM postgis/postgis:17-3.5 AS builder +FROM postgres:17 AS builder -# Instalar dependencias de compilación +# Install build dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ build-essential \ @@ -18,7 +17,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && update-ca-certificates \ && rm -rf /var/lib/apt/lists/* -# Clonar y compilar el plugin osmdbt para PostgreSQL 17 +# Clone and build osmdbt plugin for PostgreSQL 17 RUN git clone https://github.com/openstreetmap/osmdbt.git /tmp/osmdbt && \ cd /tmp/osmdbt && \ git checkout v0.9 && \ @@ -27,7 +26,12 @@ RUN git clone https://github.com/openstreetmap/osmdbt.git /tmp/osmdbt && \ cmake .. && \ make -FROM postgis/postgis:17-3.5 +FROM postgres:17 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + postgresql-17-postgis-3 \ + postgresql-17-postgis-3-scripts \ + && rm -rf /var/lib/apt/lists/* COPY --from=builder /tmp/osmdbt/postgresql-plugin/build/osm-logical.so /usr/lib/postgresql/17/lib/osm-logical.so diff --git a/values.staging.template.yaml b/values.staging.template.yaml index 1cebea35..ad6db5f7 100644 --- a/values.staging.template.yaml +++ b/values.staging.template.yaml @@ -47,7 +47,7 @@ osm-seed: accessMode: ReadWriteOnce mountPath: /var/lib/postgresql/data subPath: postgresql-db - AWS_ElasticBlockStore_volumeID : vol-05ffbd749907e949f + AWS_ElasticBlockStore_volumeID : vol-0b83349f8cff18bbe AWS_ElasticBlockStore_size: 200Gi resources: enabled: false From cdee89b82315c6e29c88b818334afcaac8f4d345 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Mon, 25 May 2026 14:41:58 -0500 Subject: [PATCH 8/9] Move extension creation to database --- images/db/Dockerfile | 4 ++++ images/db/scripts/init-extensions.sh | 8 ++++++++ values.staging.template.yaml | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100755 images/db/scripts/init-extensions.sh diff --git a/images/db/Dockerfile b/images/db/Dockerfile index b6fd6376..8de2288e 100644 --- a/images/db/Dockerfile +++ b/images/db/Dockerfile @@ -33,6 +33,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ postgresql-17-postgis-3-scripts \ && rm -rf /var/lib/apt/lists/* +# Auto-create required extensions on fresh initdb +COPY ./scripts/init-extensions.sh /docker-entrypoint-initdb.d/10-extensions.sh +RUN chmod +x /docker-entrypoint-initdb.d/10-extensions.sh + COPY --from=builder /tmp/osmdbt/postgresql-plugin/build/osm-logical.so /usr/lib/postgresql/17/lib/osm-logical.so RUN ln -s /usr/lib/postgresql/17/lib/osm-logical.so /usr/lib/postgresql/17/lib/osm_logical.so diff --git a/images/db/scripts/init-extensions.sh b/images/db/scripts/init-extensions.sh new file mode 100755 index 00000000..9c780af7 --- /dev/null +++ b/images/db/scripts/init-extensions.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +psql --username="$POSTGRES_USER" --dbname="$POSTGRES_DB" -v ON_ERROR_STOP=1 <<-'EOSQL' + CREATE EXTENSION IF NOT EXISTS postgis; + CREATE EXTENSION IF NOT EXISTS hstore; + CREATE EXTENSION IF NOT EXISTS btree_gist; +EOSQL diff --git a/values.staging.template.yaml b/values.staging.template.yaml index ad6db5f7..df9d46b9 100644 --- a/values.staging.template.yaml +++ b/values.staging.template.yaml @@ -47,7 +47,7 @@ osm-seed: accessMode: ReadWriteOnce mountPath: /var/lib/postgresql/data subPath: postgresql-db - AWS_ElasticBlockStore_volumeID : vol-0b83349f8cff18bbe + AWS_ElasticBlockStore_volumeID : vol-001f9c55b42984b18 AWS_ElasticBlockStore_size: 200Gi resources: enabled: false From b56cce92ad7fecf3f88b4138eb812fd5534d65ea Mon Sep 17 00:00:00 2001 From: Rub21 Date: Mon, 25 May 2026 14:57:06 -0500 Subject: [PATCH 9/9] Update web-api upstream gitsha --- images/web/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/web/Dockerfile b/images/web/Dockerfile index 1213101b..1cea1a58 100644 --- a/images/web/Dockerfile +++ b/images/web/Dockerfile @@ -24,7 +24,7 @@ RUN apt-get update && \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Download OHM Website using gitsha, faster than cloning -ENV OPENHISTORICALMAP_WEBSITE_GITSHA=6b4b282580a8e58f5d61a63f68a87e970e28608c +ENV OPENHISTORICALMAP_WEBSITE_GITSHA=ecd8301fd333946b50137fb702bb5c1cbd1c3970 ENV OHM_WEBSITE_URL=https://github.com/OpenHistoricalMap/ohm-website/archive/${OPENHISTORICALMAP_WEBSITE_GITSHA}.zip RUN rm -rf $workdir/* && curl -fsSL $OHM_WEBSITE_URL -o /tmp/ohm-website.zip && \ unzip /tmp/ohm-website.zip -d /tmp && \