FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

herokuでデプロイ時のエラーについて

解決済

herokuでデプロイ時のエラーについて

sen25
Shopify Partner
15 2 0

お世話になっております。

 

現在ローカルで動作しているアプリをherokuを使用してデプロイしようとしています。

しかしherokuを用いてデプロイした際にエラーが発生しており解決方法もわからないため教えていただきたいです。

現在出ているエラーは下の画像のような状態です。

buildエラー.PNG

作成しているアプリですが、nodeのテンプレートを使用して作成しておりtheme app extensionsを使用して拡張機能を追加しました。ruby environment not found と表示されているのですがアプリにはrubyを使用した覚えもありません。またshopifyのcliをインストールする際にRuby+Devkit 3.0をインストールしておりコマンドにて ruby -v 実行するとバージョンが表示されておりどこが問題になっているのかがわかりません。

herokuの設定が悪いのかと思い、ビルドパックにheroku/rubyを追加して環境変数もすべて設定したのですが何も変わらなかったです。

112b8c12-aa10-419f-8414-dba82a28eab5.png

公式のzennの記事を参考におこなっていますがうまくいかなかったです。

https://zenn.dev/kumao/articles/28ef29da20de3f#3..env%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E...

 

解決方法やherokuでのデプロイ経験があるかたご教授いただければ幸いです。よろしくお願いいたします。

1 件の受理された解決策
ogasawarakyohei
Shopify Partner
114 44 43

成功

アプリへの依存関係を追加ではなく、nodeとruby、bundlerがインストールされている環境でビルド、デプロイが必要です。

参照されたリンクの感じで基本的には問題ないと思います。

私はHerokuは使ってないのですが、ruby:3.1-bullseyeをベースとしたイメージにnodeをインストールした環境でビルドとデプロイができることを確認できています。

 

参考までにDockerfileの書き方を記載します。

FROM ruby:3.1-bullseye

RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&\
  apt-get install -y nodejs
WORKDIR /app
COPY . .
RUN npm ci && npm run build

 nodeのバージョンやビルドのコマンドなどはご自身のプロジェクトに合わせて適宜読み替えてください。

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。

元の投稿で解決策を見る

5件の返信5

ogasawarakyohei
Shopify Partner
114 44 43

Sen25さん、はじめまして。

Tsunの小笠原と申します。

解決の糸口になりそうな点を記載しますので、ご確認ください。

 

まず、エラーを見たところRubyが見つからない問題であることがわかります。

アプリにRubyを使用していなくても、Shopify CLIでdeployを実行した際にtheme check (theme app extensionsの実装がある場合のみ)が行われます。

そのtheme checkがRubyに依存しているため、theme app extensionsのデプロイの際にはRubyとBundlerが必要です。

https://shopify.dev/apps/tools/cli/ci-cd#additional-project-dependencies

 

> herokuの設定が悪いのかと思い、ビルドパックにheroku/rubyを追加して環境変数もすべて設定したのですが何も変わらなかったです。

 

念の為、再度Heroku上でRubyが動いているか、Rubyのバージョン等を確認してみてください。

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。
sen25
Shopify Partner
15 2 0

小笠原さんご回答いただきありがとうございます。

 

回答いただいた内容とリンクでrubyとbundleの依存関係を追加する必要があるのは理解できました。しかし現時点ではどのようにアプリへrubyとbundleの依存関係を追加するのかがわかりません。

 

現時点で試したことは

https://alpacat.com/blog/docker-multi-stage-build

docker fileをもとにデプロイしていると思いますので上記リンクをもとにdockerfileへrubyとbundleを持ったnodeイメージができるよう記述しました。しかし同様にエラーが表示され何も変わりませんでした。(記述方法がまちがっているかもしれませんが)

 

共有いただいたリンクの中ではパイプラインに統合するという項目がございましたが別の依存関係を追加する場合は必ず必要になりますでしょうか?

 

依存関係を追加する記述する方法を教えていただけますでしょうか。

ogasawarakyohei
Shopify Partner
114 44 43

成功

アプリへの依存関係を追加ではなく、nodeとruby、bundlerがインストールされている環境でビルド、デプロイが必要です。

参照されたリンクの感じで基本的には問題ないと思います。

私はHerokuは使ってないのですが、ruby:3.1-bullseyeをベースとしたイメージにnodeをインストールした環境でビルドとデプロイができることを確認できています。

 

参考までにDockerfileの書き方を記載します。

FROM ruby:3.1-bullseye

RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&\
  apt-get install -y nodejs
WORKDIR /app
COPY . .
RUN npm ci && npm run build

 nodeのバージョンやビルドのコマンドなどはご自身のプロジェクトに合わせて適宜読み替えてください。

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。
sen25
Shopify Partner
15 2 0

ご返信いただきありがとうございます。

 

dockerfileの記述参考にしながら記述しましたらrubyのエラーは消えました。やはり自分の記述に問題がありました。ご回答いただきありがとうございました。

AndyHung
Shopify Partner
63 0 16

Hello @sen25,

 

Now I tried to deploy nodejs app with theme app extension to Heroku and I have the same error. 

Tigr_0-1672740326038.png

My Dockerfile is:

 

FROM node:18-alpine

ARG SHOPIFY_API_KEY
ENV SHOPIFY_API_KEY=$SHOPIFY_API_KEY
EXPOSE 8081
WORKDIR /app
COPY web .
RUN npm install
RUN cd frontend && npm install && npm run build
CMD ["npm", "run", "serve"]

FROM ruby:3.1-bullseye

RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&\
  apt-get install -y nodejs
WORKDIR /app
COPY . .
RUN npm ci && npm run build

 

Tigr_1-1672740411120.png

 

But it still error. Can you help me please?