Мой веб-сайт упакован, и я хотел поместить его в контейнер для опыта, поскольку я никогда раньше не использовал Docker. Он построен на Гэтсби. Я произвел бесплатную sh установку Docker и столкнулся с двумя проблемами:
Если я попытаюсь создать изображение в контейнере Linux, похоже, это сработает, но на самом деле я не могу запустить его. Я получаю следующую ошибку: "Ошибка в" / app / node_modules / gatsby-transformer-sharp / gatsby- node.js ": двоичные файлы 'win32-x64' не могут использоваться на платформе 'linuxmusl-x64'. Удалите ' node_modules / sharp 'и запустите' npm install 'на платформе' linuxmusl-x64 '.
Я попробовал описанное выше, удалив и переустановив Sharp в моем проекте безрезультатно. Я даже не используя Sharp, и я не знаю, что это такое.
Если я переключаюсь на контейнеры Windows, я даже не могу создать изображение, так как получаю следующее: «нет соответствующего манифеста для windows / amd64 10.0 .18363 в записях списка манифестов "
Мой файл Dockerfile выглядит следующим образом:
FROM node:13.12.0-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@3.4.1 -g --silent
# add app
COPY . ./
# start app
CMD ["npm", "start"]
, а мой .dockerignore содержит
node_modules
build
Dockerfile
Dockerfile.prod
.git
Вещи, которые я пробовал:
Этот учебник> https://mherman.org/blog/dockerizing-a-react-app/ (Где я взял текст Dockerfile)
Этот учебник> https://www.robinwieruch.de/docker-create-react-app-development (И его Dockerfile в какой-то момент )
Изменение FROM для узла: на 14.4.0, 14, с или без -alpine.
Удаление и переустановка Sharp
Полное удаление Sharp и попытка запустить его таким образом (по какой-то причине я все еще получаю резкую ошибку)
Читаю документацию. Который по какой-то причине говорит вам только, как запустить приложение по умолчанию (например, create-react-app) или приложение, извлеченное откуда-то, но не как это сделать для нашего собственного веб-сайта.
Спасибо