Пример файла Docker Compose для развертывания стека MERN

Ниже приведен пример файла Docker Compose для стека MERN (MongoDB, Express.js, React, Node.js):

version: '3'
services:
  mongodb:
    image: mongo
    ports:
      - '27017:27017'
    volumes:
      - ./data:/data/db
  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    ports:
      - '8000:8000'
    environment:
      - MONGODB_URI=mongodb://mongodb:27017/mydatabase
    depends_on:
      - mongodb
  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
    ports:
      - '3000:3000'
    environment:
      - REACT_APP_API_URL=http://backend:8000/api
    depends_on:
      - backend

В этом примере мы определяем три службы: mongodb, backendи frontend. Служба mongodbиспользует официальный образ MongoDB и сопоставляет порт контейнера 27017 с портом хоста 27017. Каталог данных также монтируется как том для сохранения данных базы данных.

Служба backendсоздает серверное приложение, используя файл Dockerfile, расположенный в каталоге ./backend. Он предоставляет порт 8000 и устанавливает переменную среды MONGODB_URIдля подключения к службе MongoDB.

Служба frontendсоздает интерфейсное приложение, используя файл Dockerfile, расположенный в каталоге ./frontend. Он предоставляет порт 3000 и устанавливает переменную среды REACT_APP_API_URL, чтобы указать на серверную службу.

Чтобы использовать этот файл Docker Compose, создайте следующую структуру каталогов:

project/
├── backend/
│   ├── Dockerfile
│   └── ... (backend application files)
├── frontend/
│   ├── Dockerfile
│   └── ... (frontend application files)
└── docker-compose.yml

Поместите файл Docker Compose в корневой каталог (в этом примере project/) и замените ...фактическими файлами приложения для серверной и клиентской частей..