diff options
Diffstat (limited to 'rails-backend/Dockerfile')
| -rw-r--r-- | rails-backend/Dockerfile | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/rails-backend/Dockerfile b/rails-backend/Dockerfile new file mode 100644 index 0000000..e68d5a7 --- /dev/null +++ b/rails-backend/Dockerfile @@ -0,0 +1,63 @@ +# syntax = docker/dockerfile:1 + +# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile +ARG RUBY_VERSION=3.3.3 +#FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim as base +FROM registry.docker.com/library/ruby:$RUBY_VERSION-alpine3.20 as base + +# Rails app lives here +WORKDIR /rails + +# Set production environment +ENV RAILS_ENV="production" \ + BUNDLE_DEPLOYMENT="1" \ + BUNDLE_PATH="/usr/local/bundle" \ + BUNDLE_WITHOUT="development" + + +# Throw-away build stage to reduce size of final image +FROM base as build + +# Install packages needed to build gems +#RUN apt-get update -qq && \ +# apt-get install --no-install-recommends -y build-essential git libpq-dev libvips pkg-config +RUN apk add --update --no-cache build-base git vips postgresql-libs postgresql-dev tzdata + +# Install application gems +COPY Gemfile Gemfile.lock ./ +RUN bundle install && \ + rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git && \ + bundle exec bootsnap precompile --gemfile && echo BLAAAAHHHH + +# Copy application code +COPY . . + +# Precompile bootsnap code for faster boot times +RUN bundle exec bootsnap precompile app/ lib/ + + +# Final stage for app image +FROM base + +# Install packages needed for deployment +#RUN apt-get update -qq && \ +# apt-get install --no-install-recommends -y curl libvips postgresql-client && \ +# rm -rf /var/lib/apt/lists /var/cache/apt/archives +RUN apk add --update --no-cache curl vips postgresql-client + +# Copy built artifacts: gems, application +COPY --from=build /usr/local/bundle /usr/local/bundle +COPY --from=build /rails /rails + +# Run and own only the runtime files as a non-root user for security +#RUN useradd rails --create-home --shell /bin/bash && \ +RUN adduser rails --disabled-password --shell /bin/ash && \ + chown -R rails:rails db log storage tmp +USER rails:rails + +# Entrypoint prepares the database. +ENTRYPOINT ["/rails/bin/docker-entrypoint"] + +# Start the server by default, this can be overwritten at runtime +EXPOSE 3000 +CMD ["./bin/rails", "server"] |
