mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
Split long RUN commands in Dockerfile.dev and Dockerfile.prod into multiple lines for better readability and maintainability. No functional changes were made.
71 lines
1.9 KiB
Docker
71 lines
1.9 KiB
Docker
FROM ruby:3.4.1-slim
|
|
|
|
ENV APP_PATH=/var/app
|
|
ENV BUNDLE_VERSION=2.5.21
|
|
ENV BUNDLE_PATH=/usr/local/bundle/gems
|
|
ENV RAILS_LOG_TO_STDOUT=true
|
|
ENV RAILS_PORT=3000
|
|
ENV RAILS_ENV=production
|
|
|
|
RUN apt-get update -qq \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get upgrade -qq \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
wget \
|
|
build-essential \
|
|
git \
|
|
postgresql-client \
|
|
libpq-dev \
|
|
libxml2-dev \
|
|
libxslt-dev \
|
|
libyaml-dev \
|
|
libgeos-dev libgeos++-dev \
|
|
imagemagick \
|
|
tzdata \
|
|
nodejs \
|
|
yarn \
|
|
less \
|
|
libjemalloc2 libjemalloc-dev \
|
|
&& mkdir -p $APP_PATH \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Use jemalloc with check for architecture
|
|
RUN if [ "$(uname -m)" = "x86_64" ]; then \
|
|
echo "/usr/lib/x86_64-linux-gnu/libjemalloc.so.2" > /etc/ld.so.preload; \
|
|
else \
|
|
echo "/usr/lib/aarch64-linux-gnu/libjemalloc.so.2" > /etc/ld.so.preload; \
|
|
fi
|
|
|
|
# Enable YJIT
|
|
ENV RUBY_YJIT_ENABLE=1
|
|
|
|
# Update gem system and install bundler
|
|
RUN gem update --system 3.6.2 \
|
|
&& gem install bundler --version "$BUNDLE_VERSION" \
|
|
&& rm -rf $GEM_HOME/cache/*
|
|
|
|
WORKDIR $APP_PATH
|
|
|
|
COPY ../Gemfile ../Gemfile.lock ../.ruby-version ../vendor ./
|
|
|
|
# Install production gems only
|
|
RUN bundle config set --local path 'vendor/bundle' \
|
|
&& bundle config set --local without 'development test' \
|
|
&& bundle install --jobs 4 --retry 3 \
|
|
&& rm -rf vendor/bundle/ruby/3.4.1/cache/*.gem
|
|
|
|
COPY ../. ./
|
|
|
|
# Precompile assets for production
|
|
RUN SECRET_KEY_BASE_DUMMY=1 bundle exec rake assets:precompile \
|
|
&& rm -rf node_modules tmp/cache
|
|
|
|
# Copy entrypoint scripts and grant execution permissions
|
|
COPY ./docker/web-entrypoint.sh /usr/local/bin/web-entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/web-entrypoint.sh
|
|
|
|
COPY ./docker/sidekiq-entrypoint.sh /usr/local/bin/sidekiq-entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/sidekiq-entrypoint.sh
|
|
|
|
EXPOSE $RAILS_PORT
|
|
|
|
ENTRYPOINT [ "bundle", "exec" ]
|