Рубрики
Uncategorized

Как я заставил свой сайт следующего.js?

Узнайте, как использовать Docker для создания изображений для разработки и производства. Представьте, что у вас есть развитие … Tagged with NextJS, Docker, DevOps, Tuperial.

Узнайте, как использовать Docker для создания изображений для разработки и производства.

Представьте, что вы разработали полноценное рабочее приложение и хотите, чтобы другие разработчики внесли свой вклад в проект. Теперь, если приложение состоит из различных компонентов, таких как пользовательский интерфейс, запуск сервера, базы данных и т. Д. Новый разработчик должен установить точную конфигурацию всего стека на его/ее систему перед началом разработки. Чтобы преодолеть эту проблему Docker приходит на помощь.

Что такое Docker?

Docker — это открытая платформа для разработки, доставки и запуска приложений. Docker позволяет вам отделить ваши приложения от вашей инфраструктуры, чтобы вы могли быстро доставить программное обеспечение. С Docker вы можете управлять своей инфраструктурой так же, как управлять своими приложениями. Используя методологии Docker для доставки, тестирования и быстрого развертывания кода, вы можете значительно сократить задержку между написанием кода и выполнением его в производстве.

Многокачественный Dockerfile для разработки и производства

Я создал общий файл Docker как для разработки, так и для производства. DockerFile используется для создания изображения приложения, используя это изображение n Количество контейнеров может быть создано, что похоже на запущенную версию изображения.

🐬 Dockerfile

#Creates a layer from node:alpine image.
FROM node:alpine

#Creates directories
RUN mkdir -p /usr/src/app

#Sets an environment variable
ENV PORT 3000

#Sets the working directory for any RUN, CMD, ENTRYPOINT, COPY, and ADD commands
WORKDIR /usr/src/app

#Copy new files or directories into the filesystem of the container
COPY package.json /usr/src/app
COPY package-lock.json /usr/src/app

#Execute commands in a new layer on top of the current image and commit the results
RUN npm install

##Copy new files or directories into the filesystem of the container
COPY . /usr/src/app

#Execute commands in a new layer on top of the current image and commit the results
RUN npm run build

#Informs container runtime that the container listens on the specified network ports at runtime
EXPOSE 3000

#Allows you to configure a container that will run as an executable
ENTRYPOINT ["npm", "run"]

🐙docker-Compose для создания контейнеров с легкостью.

Предположим, у вас есть приложение, которое состоит из пользовательского интерфейса, запуска сервера, DB и вы хотите создать контейнеры для всех компонентов. Одним из способов является создание DockerFile для каждого из компонентов и запустить контейнеры один за другим вручную, или Docker-Compose можно использовать для запуска всего стека только одной командой.

Ниже приведен обычный файл docker-compose.yml как для разработки, так и для производства

🐬 Docker-Compose.yml

version: '3' #This denotes that we are using version 3 of Docker Compose
services: #This section defines all the different containers we will create.
  blog_deepak: #This is the name of our Nextjs application.
    build: #This specifies the location of our Dockerfile
      context: . #This specifies the location of our Dockerfile
    ports: #This is used to map the container's ports to the host machine.
      - "3000:3000"

🐬 Docker-compose.dev.yml

version: "3" #This denotes that we are using version 3 of Docker Compose
    services: #This section defines all the different containers we will create.
    blog_deepak: #This is the name of our Nextjs application.
        command: dev #command to execute
                #This is just like the -v option for mounting disks in Docker. In this              example, we attach our code files directory to the containers' ./code              directory.  This way, we won't have to rebuild the images if changes are           made.
        volumes:
            - .:/usr/src/app
            - /usr/src/app/node_modules
            - /usr/src/app/.next

🐬 Docker-Compose.prod.yml

version: "3" #This denotes that we are using version 3 of Docker Compose
services: #This section defines all the different containers we will create.
    blog_deepak: #This is the name of our Nextjs application.
        command: prod #command to execute

Я настроил свои сценарии в Package.json для запуска Docker-Compose.

package.json

"scripts": {
    "dev": "next dev",
    "build": "next build",
    "prod": "next start",
    "dev:up": "docker-compose -f docker-compose.yml -f docker-compose.dev.yml up",
    "prod:up": "docker-compose -f docker-compose.yml -f docker-compose.prod.yml up"
  },

По умолчанию составьте чтение двух файлов, Docker-compose.yml и дополнительный файл Docker-compose.override.yml. По соглашению, docker-compose.yml содержит вашу базовую конфигурацию. Файл переопределения, как следует из его имени, может содержать переопределения конфигурации для существующих служб или совершенно новых служб.

Чтобы использовать несколько файлов переопределения или файл переопределения с другим именем, вы можете использовать опцию -f для указания списка файлов. Compose объединяет файлы в порядке, который они указаны в командной строке.

Оригинал: «https://dev.to/deepakfilth/how-i-dockerized-my-next-js-website-4f3a»