Skip to content

Instantly share code, notes, and snippets.

@anonoz
Created March 26, 2018 03:13
Show Gist options
  • Save anonoz/b56e4e32b8c9252a3085fae74b78a7c8 to your computer and use it in GitHub Desktop.
Save anonoz/b56e4e32b8c9252a3085fae74b78a7c8 to your computer and use it in GitHub Desktop.

Revisions

  1. anonoz created this gist Mar 26, 2018.
    92 changes: 92 additions & 0 deletions Dockerfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,92 @@
    FROM madnight/docker-alpine-wkhtmltopdf as wkhtmltopdf_savior

    # STAGE for bundle & yarn install
    FROM ruby:2.4.3-alpine3.7 as builder

    ENV CA_CERTS_PATH /etc/ssl/certs/
    ENV RAILS_ENV production
    ENV RAILS_LOG_TO_STDOUT true
    ENV RAILS_SERVE_STATIC_FILES true

    RUN apk add --no-cache \
    build-base \
    busybox \
    ca-certificates \
    curl \
    git \
    gnupg1 \
    graphicsmagick \
    libffi-dev \
    libsodium-dev \
    nodejs=8.9.3-r0 \
    openssh-client \
    postgresql-dev \
    rsync \
    yarn

    RUN mkdir -p /app
    WORKDIR /app

    COPY Gemfile Gemfile.lock /app/
    ARG SSH_CHECKOUT_KEY
    RUN mkdir /root/.ssh/ \
    && echo "${SSH_CHECKOUT_KEY}" > /root/.ssh/id_rsa \
    && chmod 400 /root/.ssh/id_rsa \
    && touch /root/.ssh/known_hosts \
    && echo $'\
    github.com,192.30.255.112 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== \n\
    bitbucket.org,104.192.143.1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw== \n\
    ' >> /root/.ssh/known_hosts \
    && bundle config --global frozen 1 \
    && bundle install --without development test -j4 --retry 3 \
    && rm -rf /root/.ssh/id_rsa \
    /usr/local/bundle/bundler/gems/*/.git \
    /usr/local/bundle/cache/

    COPY package.json yarn.lock /app/
    RUN yarn install

    COPY . /app/
    RUN bundle exec rails \
    AWS_ACCESS_KEY_ID=dontneed \
    AWS_SECRET_ACCESS_KEY=dontneed \
    DATABASE_URL=postgresql:does_not_exist \
    SECRET_KEY_BASE=nein \
    assets:precompile

    # Packaging final app w/o node_modules & the development tools
    FROM ruby:2.4.3-alpine3.7

    ENV CA_CERTS_PATH /etc/ssl/certs/
    ENV RAILS_ENV production
    ENV RAILS_SERVE_STATIC_FILES true
    ENV RAILS_LOG_TO_STDOUT true

    RUN apk add --no-cache \
    busybox \
    ca-certificates \
    curl \
    gnupg1 \
    graphicsmagick \
    libsodium-dev \
    nodejs=8.9.3-r0 \
    postgresql-dev \
    rsync

    # Patch for wkhtmltopdf
    RUN apk add --update --no-cache \
    libgcc libstdc++ libx11 glib libxrender libxext libintl \
    libcrypto1.0 libssl1.0 \
    ttf-dejavu ttf-droid ttf-freefont ttf-liberation ttf-ubuntu-font-family

    COPY --from=wkhtmltopdf_savior /bin/wkhtmltopdf /bin/

    RUN mkdir -p /app
    WORKDIR /app

    COPY --from=builder /usr/local/bundle/ /usr/local/bundle/
    COPY --from=builder /app/ /app/
    COPY --from=builder /app/config/gpg/ /root/.gnupg/

    EXPOSE 3000
    CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]