# syntax=docker/dockerfile:1.0-experimental

FROM ruby:2.6.1-alpine3.9 AS base

# apkファイルがキャッシュされるように設定し、インデックスを取得しておく
RUN --mount=type=cache,id=apk,target=/var/cache/apk \
    ln -s /var/cache/apk /etc/apk/cache && \
    apk update


FROM base AS gemfiles

# ビルドに必要なパッケージをインストールする
RUN --mount=type=cache,id=apk,target=/var/cache/apk \
    apk add \
        build-base \
        mariadb-connector-c-dev

WORKDIR /app

# Gemをインストールする
COPY Gemfile Gemfile.lock ./

RUN --mount=type=cache,id=gem,target=/usr/local/bundle/cache \
    --mount=type=cache,id=bundle,target=/root/.bundle/cache \
    bundle install


FROM base AS fonts

WORKDIR /tmp

# 日本語フォント（IPAexフォント）を準備する
ENV zip_basename=IPAexfont00301
RUN --mount=type=cache,id=src,target=/tmp/src \
    if [ ! -f src/${zip_basename}.zip ]; then \
        wget -q https://oscdl.ipa.go.jp/IPAexfont/${zip_basename}.zip && \
        mv ${zip_basename}.zip src/ ; \
    fi && \
    \
    unzip src/${zip_basename}.zip && \
    mv ${zip_basename} IPAexfont


FROM base

# パッケージをインストールする
RUN --mount=type=cache,id=apk,target=/var/cache/apk \
    apk add \
        mariadb-connector-c \
        wkhtmltopdf

# フォントをインストールする
COPY --from=fonts /tmp/IPAexfont/*.ttf /usr/share/fonts/TTF/
RUN fc-cache

# Gemのファイルを持ってくる
COPY --from=gemfiles /usr/local/bundle/ /usr/local/bundle/

WORKDIR /app

# アプリケーションをコピーする
COPY . ./
CMD ["ruby", "app.rb"]
