質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

647閲覧

dockerfileでNODE_ENV=productionを指定するとビルドが失敗する

mnr_kbys

総合スコア1

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2023/11/20 04:02

実現したいこと

  • node.js環境でvueを本番環境用のnginxにビルドしたい

前提

  • node:20-alpine3.17

発生している問題・エラーメッセージ

vueの公式ページを参考に開発環境・ビルド環境をnode.jsに、本番環境をnginxにデプロイするマルチステージビルドを実装していましたが、ビルド環境のNODE_ENVをNODE_ENV=productionに変更するとビルドエラーとなります。
エラー内容はビルド時に呼び出しているyarn buildで定義されているvue-cli-serviceが見つからないという内容です。

ERROR [frontend build-stage 9/9] RUN yarn run build 0.8s ------ > [frontend build-stage 9/9] RUN yarn run build: 0.493 yarn run v1.22.19 0.542 $ vue-cli-service build 0.556 /bin/sh: vue-cli-service: not found 0.568 error Command failed with exit code 127. 0.568 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. ------ failed to solve: process "/bin/sh -c yarn run build" did not complete successfully: exit code: 127

該当のソースコード

手順としては以下のようにdocker-composeからdockerfileを呼び出してビルドしています。

  1. docker-composeでワークスペースをマウント
  2. package.jsonとyarn.lockファイルを/appにコピーしyarn installを実行
  3. ワークスペース全体をマウントし、ビルド

compose

1version: "3.9" 2services: 3 4 frontend: 5 container_name: vue-container 6 build: 7 context: . 8 dockerfile: ./infra/vue/Dockerfile.verifi 9 ports: 10 - 9001:80 11 working_dir: /app 12 volumes: 13 - node_modules:/app/node_modules 14 - ./vue_workspace/front_app/:/app:cached

Dockerfile.verifi

1FROM node:20-alpine3.17 as build-stage 2 3ENV NODE_ENV production 4 5WORKDIR /app 6 7RUN mkdir -p /usr/share/nginx/html 8COPY ./vue_workspace/front_app /app 9COPY ./vue_workspace/front_app/package*.json ./ 10COPY ./vue_workspace/front_app/yarn.lock ./ 11RUN yarn install --prod 12COPY ./vue_workspace/front_app/ /app/ 13RUN yarn run build 14 15 16FROM nginx:1.17.10-alpine as production-stage 17 18RUN mkdir /app 19COPY --from=build-stage /usr/share/nginx/html /usr/share/nginx/html 20COPY ./infra/vue/nginx-verifi.conf /etc/nginx/conf.d/default.conf 21EXPOSE 80 22CMD ["nginx", "-g", "daemon off;"]

試したこと

vue-cli-service: not foundと表示があったので、build前にyarn add @vue/cliを入れて実行してみましたが状況変わらずでした。
また、package.jsonのdependencesに@vue/cliが記載されていなかったため、devDependencesからコピーして持ってきましたが、同じエラーとなりました。
NODE_ENV=developmentを指定するとbuildは通過します。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
package.jsonのdependencesに@vue-cli-serviceがなかったため、devDependencesの記述をコピーして実行するとビルドできました。

投稿2023/11/20 06:23

mnr_kbys

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/11/21 03:03

productionビルドにvue-cli-service入ったらまずいのではないのでしょうか? プロジェクトの構成など肝心な部分がないので分かりませんが、ビルドはdevelopmentで大丈夫だと思います。 https://vuejs.org/guide/best-practices/production-deployment.html
mnr_kbys

2023/11/22 11:28

コメントありがとうございます。 dameo様のおっしゃる通りビルドはdevelopmentで問題なさそうでした。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問