-FROM ubuntu:20.04
+FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
-# Install system packages
-RUN apt-get update && \
- apt-get install --no-install-recommends -y \
+# Install system packages then clean up to minimize image size
+RUN apt-get update \
+ && apt-get install --no-install-recommends -y \
build-essential \
curl \
default-jre-headless \
- firefox-geckodriver \
- imagemagick \
+ file \
+ git-core \
+ gpg-agent \
libarchive-dev \
libffi-dev \
- libmagickwand-dev \
+ libgd-dev \
libpq-dev \
libsasl2-dev \
+ libvips-dev \
libxml2-dev \
libxslt1-dev \
locales \
- nodejs \
postgresql-client \
- ruby2.7 \
- ruby2.7-dev \
+ ruby \
+ ruby-dev \
+ ruby-bundler \
+ software-properties-common \
tzdata \
- yarnpkg && \
- apt-get clean && \
- rm -rf /var/lib/apt/lists/*
+ unzip \
+ nodejs \
+ npm \
+ && npm install --global yarn \
+ # We can't use snap packages for firefox inside a container, so we need to get firefox+geckodriver elsewhere
+ && add-apt-repository -y ppa:mozillateam/ppa \
+ && echo "Package: *\nPin: release o=LP-PPA-mozillateam\nPin-Priority: 1001" > /etc/apt/preferences.d/mozilla-firefox \
+ && apt-get install --no-install-recommends -y \
+ firefox-geckodriver \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/*
-# Install current Osmosis
-RUN curl -OL https://github.com/openstreetmap/osmosis/releases/download/0.47.2/osmosis-0.47.2.tgz && \
- tar -C /usr/local -xzf osmosis-0.47.2.tgz
+# Install compatible Osmosis to help users import sample data in a new instance
+RUN curl -OL https://github.com/openstreetmap/osmosis/releases/download/0.47.2/osmosis-0.47.2.tgz \
+ && tar -C /usr/local -xzf osmosis-0.47.2.tgz
ENV DEBIAN_FRONTEND=dialog
# Install Ruby packages
ADD Gemfile Gemfile.lock /app/
-RUN gem install bundler && \
- bundle install
+RUN bundle install
-# Install NodeJS packages
+# Install NodeJS packages using yarn
ADD package.json yarn.lock /app/
-RUN yarnpkg install
+ADD bin/yarn /app/bin/
+RUN bundle exec bin/yarn install