# Docker公式のRubyイメージを使う
FROM ruby:2.6.1-stretch

# アプリケーションを配置するディレクトリ
WORKDIR /app

# インストールするNode.jsとYarnのバージョン
# NODE_SHA256SUMの値は https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt を参照のこと
ENV \
  NODE_VERSION=v10.15.3 \
  NODE_DISTRO=linux-x64 \
  NODE_SHA256SUM=faddbe418064baf2226c2fcbd038c3ef4ae6f936eb952a1138c7ff8cfe862438 \
  YARN_VERSION=1.15.2

# YarnのインストールでNode.jsのバージョンをチェックしているので、先にインストール先へPATHを通しておく
ENV PATH=/opt/node-${NODE_VERSION}-${NODE_DISTRO}/bin:/opt/yarn-v${YARN_VERSION}/bin:${PATH}

# Node.jsとYarnをインストールする
RUN curl -sSfLO https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz \
    && echo "${NODE_SHA256SUM} node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz" | sha256sum -c - \
    && tar -xJ -f node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz -C /opt \
    && rm -v node-${NODE_VERSION}-${NODE_DISTRO}.tar.xz \
    && curl -o - -sSfL https://yarnpkg.com/install.sh | bash -s -- --version ${YARN_VERSION} \
    && mv /root/.yarn /opt/yarn-v${YARN_VERSION}

# Bundlerでgemをインストールする
ARG BUNDLE_INSTALL_ARGS="-j 4"
COPY Gemfile Gemfile.lock ./
RUN bundle install ${BUNDLE_INSTALL_ARGS}

# エントリーポイントを設定する
COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

# アプリケーションのファイルをコピーする
COPY . ./

# サービスを実行するコマンドとポート設定する
CMD ["rails", "server", "-b", "0.0.0.0"]
EXPOSE 3000
