curl \
default-jre-headless \
file \
+ git-core \
gpg-agent \
libarchive-dev \
libffi-dev \
libvips-dev \
libxml2-dev \
libxslt1-dev \
+ libyaml-dev \
locales \
postgresql-client \
- ruby3.0 \
- ruby3.0-dev \
+ ruby \
+ ruby-dev \
+ ruby-bundler \
software-properties-common \
tzdata \
- unzip \
- && curl https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
- && add-apt-repository -y -U https://deb.nodesource.com/node_18.x \
- && apt-get install --no-install-recommends -y \
- nodejs \
- && npm install --global yarn \
+ unzip
+
+# Install Node.js 18 and npm
+RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
+ && apt-get install -y nodejs
+
+# Install yarn globally
+RUN 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 \
# Install Ruby packages
ADD Gemfile Gemfile.lock /app/
-RUN gem install bundler \
- && bundle install
+RUN bundle install
# Install NodeJS packages using yarn
ADD package.json yarn.lock /app/