Узнайте, как использовать 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»