Websites/Dockerfile
2024-06-29 02:17:46 -05:00

45 lines
1.4 KiB
Docker

FROM ruby:3.2.2-alpine3.18 AS ruby-builder
RUN apk --no-cache add build-base cmake git glib-dev postgresql14-dev
COPY Gemfile Gemfile.lock ./
RUN gem i foreman && BUNDLE_IGNORE_CONFIG=true bundle install -j$(nproc) \
&& rm -rf /usr/local/bundle/cache/*.gem \
&& find /usr/local/bundle/gems/ -name "*.c" -delete \
&& find /usr/local/bundle/gems/ -name "*.o" -delete
FROM node:18-alpine3.18 AS node-builder
RUN apk --no-cache add git
WORKDIR /app
COPY package.json yarn.lock ./
RUN corepack enable && corepack prepare --activate && yarn install
RUN corepack install -g pnpm
FROM ruby:3.2.2-alpine3.18
RUN apk --no-cache add ffmpeg vips gifsicle \
postgresql14-client \
git git-lfs jemalloc tzdata \
openssh-keygen
WORKDIR /app
RUN git config --global --add safe.directory $(pwd)
ENV LD_PRELOAD=/usr/lib/libjemalloc.so.2
ENV RUBY_YJIT_ENABLE=1
# Setup node and yarn
COPY --from=node-builder /usr/lib /usr/lib
COPY --from=node-builder /usr/local/share /usr/local/share
COPY --from=node-builder /usr/local/lib /usr/local/lib
COPY --from=node-builder /usr/local/include /usr/local/include
COPY --from=node-builder /usr/local/bin /usr/local/bin
COPY --from=node-builder /root/.cache/node /root/.cache/node
# Copy gems and js packages
COPY --from=node-builder /app/node_modules node_modules
COPY --from=ruby-builder /usr/local/bundle /usr/local/bundle
CMD ["foreman", "start", "-f", "Procfile.dev"]