Как развернуть проект React (NextJS) с помощью докера? - PullRequest
0 голосов
/ 21 мая 2019

Я собираюсь развернуть свой проект с помощью докера.но я не уверен, какие папки положить в докер.Это мои папки;

.next
actions
api
components
constants
helpers
node_modules
pages
reducers
static
stores
.gitignore
next.config.js
package-lock.json
package.json
README.md
routes.js
server.js

Какие из перечисленных выше папок и файлов я должен поместить в докер?И как я должен иметь блок блоков в package.json?Мой файл сценария в настоящее время:

"scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  }

В настоящее время я выполняю развертывание с «npm run build && npm run start», но каждая страница перекомпилируется, что, похоже, приводит к потере производительности.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Браузерные приложения немного ортогональны системе контейнеров Docker. В типичном производственном использовании вы бы использовали инструмент типа Webpack , чтобы скомпилировать ваше приложение в статические файлы. Тогда ничто локально на самом деле не запускает код вашего приложения; вместо этого HTTP-сервер, такой как Nginx, будет предоставлять скомпилированные артефакты браузерам, не зная, что они собой представляют.

Если Docker вообще входит в картинку, вы можете смонтировать каталог, например dist, который содержит скомпилированные артефакты в простой контейнер веб-сервера:

npm install
npm run build
sudo docker run -v $PWD/dist:/usr/share/nginx/html -p 8080:80 nginx

Поскольку скомпилированный код выполняется в браузере, а не в Docker, он не может использовать преимущества таких вещей, как межконтейнерная DNS (браузер не знает, существует ли Docker, и ему приходится общаться с внешне видимыми именами хостов). И поскольку в конечном итоге вы создаете автономный скомпилированный артефакт, вы не получаете никакой выгоды от запуска набора инструментов в Docker. Во время разработки я просто npm run start на хосте и вообще не задействовал Docker.

1 голос
/ 21 мая 2019

Сначала создайте файл dockerignore добавлять a.dockerignore

node_modules
.next
npm-debug.log

Содержание Dockerfile

FROM node:alpine
    # Create app directory
    RUN mkdir -p /usr/src/app
    WORKDIR /usr/src/app
    # Install app dependencies
    COPY package.json /usr/src/app/
    RUN npm install
    # Bundle app source
    COPY . /usr/src/app
    RUN npm run build
    EXPOSE 3000
    CMD [ "npm", "start" ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...