Files
redux-scraper/Dockerfile
2024-12-17 06:34:47 -08:00

73 lines
2.2 KiB
Docker

FROM ruby:3.2.0 AS native-gems
RUN rm -f /etc/apt/apt.conf.d/docker-clean; \
echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN \
--mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update && \
apt-get install --no-install-recommends --no-install-suggests -y \
cmake
WORKDIR /usr/src/app
RUN gem install bundler -v '2.4.5'
COPY gems gems
WORKDIR /usr/src/app/gems/xdiff-rb
RUN bundle install
RUN rake compile
WORKDIR /usr/src/app/gems/rb-bsdiff
RUN bundle install
RUN rake compile
# Primary image
FROM ruby:3.2.0
# set up nodejs 18.x deb repo
USER root
RUN mkdir -p /etc/apt/keyrings && \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
| gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" \
| tee /etc/apt/sources.list.d/nodesource.list
# apt caching & install packages
RUN rm -f /etc/apt/apt.conf.d/docker-clean; \
echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN \
--mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update && \
apt-get install --no-install-recommends --no-install-suggests -y \
libblas-dev liblapack-dev libvips42 ca-certificates curl gnupg nodejs libpq-dev
USER vscode
ENV PATH=/home/vscode/.rbenv/shims:$PATH
WORKDIR /usr/src/app
RUN gem install bundler -v '2.4.1'
RUN bundle config --global frozen 1
WORKDIR /usr/src/app
# install gems
COPY Gemfile Gemfile.lock ./
COPY gems gems
RUN bundle install
# install js dependencies
COPY package.json yarn.lock ./
RUN npm install yarn && \
bin/rails yarn:install && \
yarn
COPY . .
COPY --from=native-gems /usr/src/app/gems/xdiff-rb/lib/xdiff gems/xdiff-rb/lib/xdiff
COPY --from=native-gems /usr/src/app/gems/rb-bsdiff/lib gems/rb-bsdiff/lib
# precompile assets
ENV RAILS_ENV production
RUN bin/rails assets:precompile
ENV RAILS_ENV worker
ENV proxy direct
RUN mkdir -p tmp/pids
CMD /bin/bash