実現したいこと
- 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を呼び出してビルドしています。
- docker-composeでワークスペースをマウント
- package.jsonとyarn.lockファイルを/appにコピーしyarn installを実行
- ワークスペース全体をマウントし、ビルド
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は通過します。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2023/11/21 03:03
2023/11/22 11:28