rails environment with jemalloc and postgres
1.7K
Image that uses jemalloc, postgres-cli, image-optim
# docker buildx create --use
# docker buildx build --platform linux/amd64,linux/arm64 --build-arg RUBY_VERSION=3.1.3 -t karoid/rails-postgres-ffmpeg:3.1.3-bullseye -t karoid/rails-postgres-ffmpeg:latest --push .
ARG RUBY_VERSION="3.1.3"
FROM ruby:$RUBY_VERSION-bullseye as base
RUN apt-get update -qq \
&& apt-get install -y libmad0-dev \
libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev \
libboost-program-options-dev \
libboost-regex-dev libjemalloc2 \
&& echo "export LD_PRELOAD=$(find /usr/lib -name libjemalloc.so.2)" > ~/.bashrc
#################
# Sub Stage 1 #
#################
FROM node:17.6.0-bullseye as builder3
RUN cp -r /usr/local/bin /usr/local/cp-bin \
&& rm /usr/local/cp-bin/corepack /usr/local/cp-bin/docker-entrypoint.sh \
&& apt-get update -qq \
&& apt-get install -y wget tar \
# pngout
&& wget http://www.jonof.id.au/files/kenutils/pngout-20200115-linux.tar.gz \
&& tar -xvzf pngout-20200115-linux.tar.gz \
&& arch=$(arch | sed s/x86_64/amd64/) \
&& cp pngout-20200115-linux/$arch/pngout /bin/pngout \
&& chmod 755 /bin/pngout \
&& rm -f pngout-20200115-linux.tar.gz \
&& rm -rf pngout-20200115-linux
FROM base as sub1
RUN apt-get install -y postgresql-client libimage-exiftool-perl vim libvips ffmpeg
# yarn
RUN mkdir /usr/local/lib/node_modules /opt/yarn-v1.22.17
COPY --from=builder3 /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=builder3 /opt/yarn-v1.22.17 /opt/yarn-v1.22.17
COPY --from=builder3 /usr/local/cp-bin /usr/local/bin
COPY --from=builder3 /bin/pngout /bin/pngout
RUN apt-get install -y advancecomp gifsicle jhead jpegoptim libjpeg-progs optipng pngcrush pngquant
# svgo
RUN yarn global add svgo
Use it in your rails project dockerfile
You may change timezone to your region
FROM karoid/rails-postgres-ffmpeg:3.1.3-bullseye as main
# Bundler
WORKDIR /myapp
COPY Gemfile Gemfile.lock /myapp/
RUN bundle config set without test \
&& bundle install \
&& ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# Add a script to be executed every time the container starts.
COPY ./docker/ruby/entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# Configure the main process to run when running the image
CMD ["rails", "server", "-b", "0.0.0.0"]
Content type
Image
Digest
sha256:c5318d426…
Size
688.3 MB
Last updated
about 1 year ago
docker pull karoid/rails-postgres-ffmpeg