openstreetmap-website/Dockerfile
Andy Allan 581bf517cb Use bin/yarn consistently for installations
Since rails 7, the `rails yarn:install` command no longer uses
bin/yarn and so a) doesn't detect yarn binaries named "yarnpkg"
(e.g. Ubuntu) and b) doesn't allow us to pass any flags to yarn,
(e.g. "--ignore-engines").

Since we want to avoid making the installation more difficult (by
e.g. installing yarn from other sources, or requiring particular
node versions) we can instead just use our existing bin/yarn script.

The reason Dockerfile did its own thing was to avoid pulling in
big chunks of rails, but bin/yarn is a standalone ruby script.

Fixes #3579
2023-01-11 13:58:54 +00:00

50 lines
1.2 KiB
Docker

FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
# 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 \
file \
firefox-geckodriver \
libarchive-dev \
libffi-dev \
libgd-dev \
libpq-dev \
libsasl2-dev \
libvips-dev \
libxml2-dev \
libxslt1-dev \
locales \
nodejs \
postgresql-client \
ruby2.7 \
ruby2.7-dev \
tzdata \
unzip \
yarnpkg \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 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
# Setup app location
RUN mkdir -p /app
WORKDIR /app
# Install Ruby packages
ADD Gemfile Gemfile.lock /app/
RUN gem install bundler \
&& bundle install
# Install NodeJS packages using yarn
ADD package.json yarn.lock /app/
ADD bin/yarn /app/bin/
RUN bundle exec bin/yarn install