Как создать файлы Docker для приложения AWS Amplify React
Контекст: я настроил базовый код для приложения React, которое работает на AWS. Я добавил инструменты аутентификации и Graphql. По сути, я сделал все, что было указано в этом руководстве: https://aws.amazon.com/getting-started/hands-on/build-react-app-amplify-graphql/.
Я хочу Dockerize свое приложение и добавил файлы Dockerfile, Dockerfile.dev и docker-compose.yml согласно этому руководству: https://medium.com/better-programming/heres-how-you-can-use-docker-with-create-react-app-3ee3a972b04e. Я помещу содержимое моих Dockerfiles внизу этого поста.
Проблема: я нахожусь в каталоге, содержащем мое приложение React, и запустил
docker-compose up
, но я получаю много предупреждений, которые я помещу под этим абзацем. Мое приложение успешно работает на порту 3000, как я указал в моем docker-compose.yml. У меня вопрос, не пропустил ли я ключевой фрагмент кода в файлах Docker, из-за которого Docker выдает все эти предупреждения. Я успешно использовал Docker для приложения React, которое я создал во время стажировки, но я не уверен, что мне нужно добавить что-то еще, если я запускаю свое приложение React на AWS. Если у кого-нибудь есть совет, я буду очень признателен. Пожалуйста, дайте мне знать, если есть ключевые элементы информации, которые я опускаю в своем сообщении, и простите меня, потому что я все еще новичок в использовании Docker.
Dockerfile
FROM node:13.12.0-alpine
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@3.4.1 -g --silent
COPY . ./
CMD ["npm", "start"]
Dockerfile.dev
FROM node:alpine
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD ["npm", "run", "start"]
docker-compose.yml
version: "3.8"
services:
client:
stdin_open: true
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- "/app/node_modules"
- "./:/app"
Предупреждения Docker Terminal
Step 4/6 : RUN npm install
---> Running in e245d3bb0bc3
npm WARN deprecated eslint-loader@3.0.3: This loader has been deprecated. Please use eslint-webpack-plugin
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated @types/testing-library__dom@7.5.0: This is a stub types definition. testing-library__dom provides its own type definitions, so you do not need this installed.
npm WARN deprecated request@2.88.2: request has been deprecated, see
https://github.com/request/request/issues/3142
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated @hapi/joi@15.1.1: joi is leaving the @hapi organization and moving back to 'joi' (https://github.com/sideway/joi/issues/2411)
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated buffer@4.9.1: This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated @hapi/address@2.1.4: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated left-pad@1.3.0: use String.prototype.padStart()
...
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.2 (node_modules/react-scripts/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/jest-haste-map/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN notsup Unsupported engine for watchpack-chokidar2@2.0.0: wanted: {"node":"<8.10.0"} (current: {"node":"14.13.1","npm":"6.14.8"})
npm WARN notsup Not compatible with your version of node/npm: watchpack-chokidar2@2.0.0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/watchpack-chokidar2/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/webpack-dev-server/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN react-native-get-random-values@1.5.0 requires a peer of react-native@>=0.56 but none is installed. You must install peer dependencies yourself.
npm WARN @aws-amplify/datastore@2.6.0 requires a peer of @react-native-community/netinfo@^5.5.0 but none is installed. You must install peer dependencies yourself.
npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer
dependencies yourself.
added 1825 packages from 1181 contributors and audited 1829 packages in 53.175s
1 ответ
Предупреждения относятся к пакетам npm, которые добавляются в образ Docker в файле Docker.dev, шаг 4 -
npm install
, и на самом деле не являются предупреждениями докеров.
Эти пакеты требуются как часть приложения React, независимо от того, контейнеризировано оно или нет, поэтому предупреждения также будут отображаться, если
npm install
запускается с вашего локального терминала.
Если вы хотите скрыть предупреждения, добавив
--silent
(в качестве альтернативы используйте
-s
или же
--no-warnings
), как в Dockerfile на шаге 6, эти предупреждения будут скрыты.