Сбой при развертывании saleor с использованием Dockerfile

#docker #deployment #docker-compose #dockerfile #saleor

#docker #развертывание #docker-создать #dockerfile #saleor

Вопрос:

Я пытался развернуть свой настроенный Saleor в DigitalOcean droplet с использованием Dockerfile. Для производственной среды Dockerfile является

 FROM node:10 as builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ARG API_URI
ENV API_URI ${API_URI:-http://localhost:8000/graphql/}
RUN API_URI=${API_URI} npm run build

FROM nginx:stable
WORKDIR /app
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/dist/ /app/
  

Для среды разработки Dockerfile.разработчик

 FROM node:10

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ARG APP_MOUNT_URI
ARG API_URI
ARG STATIC_URL
ENV API_URI ${API_URI:-http://localhost:8000/graphql/}
ENV APP_MOUNT_URI ${APP_MOUNT_URI:-/dashboard/}
ENV STATIC_URL ${STATIC_URL:-/dashboard/}

EXPOSE 9000
CMD npm start -- --host 0.0.0.0
  

Я могу выполнить развертывание с помощью Dockerfile.разработчик, но не может выполнить развертывание с использованием Dockerfile для производства. В итоге возникли следующие ошибки

 npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! saleor-site@2.10.4 build: `webpack -p`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the saleor-site@2.10.4 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-08-23T18_40_53_645Z-debug.log
ERROR: Service 'storefront' failed to build: The command '/bin/sh -c API_URI=${API_URI} npm run build' returned a non-zero code: 2
  

Комментарии:

1. На самом деле интересная ошибка находится выше того, что вы показываете. Отложите на данный момент Docker; если хотите rm -rf node_modules; npm install; npm run build , работает ли он в среде Node, которую вы используете для повседневной разработки?

2. @DavidMaze выдает ту же ошибку. Итак, проблема в моих пакетах, а не в docker