проблема с несколькими пармами и RUN - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь заставить Parcel Bundler создавать ресурсы из Dockerfile.Но с ошибкой:

entries Записи не найдены.в Bundler.bundle (/usr/local/lib/node_modules/parcel-bundler/src/Bundler.js:260:17) в ОШИБКЕ: не удалось создать службу 'webapp': команда '/ bin / sh -c parcel buildindex.html 'вернул ненулевой код: 1

Вот мой dockerfile:

FROM node:8 as base
WORKDIR /usr/src/app
COPY package*.json ./

# Development
FROM base as development
ENV NODE_ENV=development
RUN npm install
RUN npm install -g parcel-bundler
WORKDIR /usr/src/app
RUN parcel build index.html     <----- this is where its failing!
#RUN parcel watch index.html
# Uncomment to use Parcel's dev-server
#CMD [ "npm", "run", "parcel:dev" ]
#CMD ["npm", "start"]

# Production
FROM base as production
ENV NODE_ENV=production
COPY . .
RUN npm install --only=production
RUN npm install -g parcel-bundler
RUN npm run parcel:build
CMD [ "npm", "start" ]

ПРИМЕЧАНИЕ. Сначала я пытаюсь запустить его в режиме разработки.

Когда я «захожу» в контейнер, я обнаружил, что эта команда не работает:

# /bin/sh -c parcel build index.html

Но это работает:

# parcel build index.html 

И это работает:

# /bin/sh -c "parcel build index.html"

Но использование этих вариантов в Dockerfile по-прежнему НЕ работает:

RUN /bin/sh -c "parcel build index.html"

или

RUN ["/bin/sh", "-c", "parcel build index.html"]

ПРИМЕЧАНИЕ. Я также попытался использовать 'bash' вместо 'sh 'и это все еще не сработало.

Есть идеи, почему он не работает?

1 Ответ

0 голосов
/ 25 октября 2018

bash и sh действительно разные оболочки, но здесь это не должно иметь значения.-c "command argument argument" передает всю строку оболочки в -c, тогда как -c command argument argument передает только command в -c, оставляя аргументы для интерпретации как дополнительные команды для вызываемой оболочки.Таким образом, правильный вызов действительно:

RUN parcel build index.html

или, если вы предпочитаете явно делать то, что Docker будет делать, когда он видит RUN, за которым следует строка , вы можете сделать:

RUN [ "bash", "-c", "parcel build index.html" ]

Но я не думаю, что это ваша проблема.Глядя на ваш файл докера, я думаю, что вы, вероятно, либо:

  • пропустили некоторые файлы, необходимые Bundler (вы только что скопировали в package*.json на данный момент)
  • отсутствуеткакой-то дополнительный конфиг, который необходим для работы Bundler (я не вижу, что вы явно устанавливаете 'webapp', но это может быть файл package*.json)

Я бы положил свои деньги на первый,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...