Dockerизация Strapi необходима для современных процессов разработки. Это подробное руководство рассматривает настройку Strapi в Docker-контейнерах с поддержкой нескольких версий, что обеспечивает стабильные среды разработки и упрощённые процессы деплоя.
Использование Docker со Strapi обеспечивает единообразные среды на всех этапах разработки, упрощает управление версиями и облегчает развёртывание на разных облачных платформах.
У вас есть два варианта, чтобы приступить к dockerизации приложения Strapi:\n\n1. Сделать форк стартового репозитория: для удобства вы можете форкнуть наш репозиторий со всеми готовыми Docker-конфигурациями для Strapi. Это самый быстрый способ получить корректно настроенное окружение.\n\n2. Создать конфигурацию с нуля: вы можете добавить Docker в существующий проект или настроить новый. Достаточно создать Dockerfile и docker-compose.yml по образцам ниже и вставить соответствующий код.\n\nОба подхода рабочие — выбирайте тот, который лучше соответствует вашим требованиям и уровню владения Docker.
Dockerfile — основная конфигурация контейнера Strapi. Наш подход использует мультистейдж-сборку, которая позволяет переключаться между режимами разработки и продакшена. Перед dockerизацией необходимо вручную подготовить проект Strapi. Выполните шаги ниже, если ещё не сделали этого.\n\nШаг 1: создайте новый проект Strapi (убедитесь, что Node.js и npm установлены).\n\nШаг 2: перейдите в каталог проекта.\n\nШаг 3: после настройки Strapi добавьте конфигурацию Docker. Ниже приведены Dockerfile и docker-compose.yml для запуска проекта в контейнерах.
# Step 1: Create a Strapi project (if not already created)
npx create-strapi-app my-project --quickstart --no-run
# Step 2: Navigate into the project directory
cd my-project
# Step 3: After setting up the Strapi project, you can proceed with Docker configuration
Dockerfile — ядро конфигурации контейнера Strapi. Мы используем мультистейдж-сборку, чтобы гибко переключаться между режимами разработки и продакшена. Файл ниже универсален: он создаёт новый проект, если его ещё нет, или поднимает уже подготовленное приложение.
# dev | prod
ARG RUN_MODE=dev
# === Dev Mode ===
FROM node:18 as dev
WORKDIR /app
ADD ./ /app
RUN npm install
ENTRYPOINT [ "npm", "run", "develop" ]
# === Dev Mode ===
FROM node:18 as prod
WORKDIR /app
ADD ./ /app
RUN npm install
ENTRYPOINT [ "npm", "start"]
# Pick the container from selected run mode
FROM {RUN_MODE}
Docker Compose упрощает управление несколькими инстансами Strapi и их зависимостями. Такая конфигурация позволяет запускать разные версии Strapi параллельно для тестирования или разработки.
version: "3.9"
services:
strapi:
build:
context: ./server
dockerfile: Dockerfile
ports:
- "24000:1337"
environment:
DATABASE_CLIENT: postgres
DATABASE_NAME: strapi
DATABASE_HOST: postgres
DATABASE_PORT: 5432
DATABASE_USERNAME: strapi
DATABASE_PASSWORD: strapi
NODE_ENV: development
volumes:
- ./server:/app
- /app/node_modules
- /app/build
depends_on:
- postgres
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "3000:3000"
volumes:
- ./frontend:/app
- /app/node_modules
tty: true
stdin_open: true
postgres:
image: postgres:15
restart: always
environment:
POSTGRES_DB: strapi
POSTGRES_USER: strapi
POSTGRES_PASSWORD: strapi
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
postgres_data:
Структура проекта будет выглядеть примерно так. Dockerfile и docker-compose.yml расположены в корне, а каталоги strapi-4 и strapi-5 содержат соответствующие версии Strapi.
// Directory structure for a Strapi Project width Docker
strapi-docker-starter/
├── frontend/
│ └── Dockerfile
├── server/
│ ├── Dockerfile
│ ├── .strapi/
│ ├── .tmp/
│ ├── build/
│ ├── config/
│ ├── database/
│ ├── node_modules/
│ ├── public/
│ ├── src/
│ ├── types/
│ ├── .env
│ ├── package.json
│ └── ...
├── docker-compose.yml
Чтобы эффективно работать внутри контейнеров Docker, установите расширение «Remote - Containers» для VS Code. Оно позволяет подключаться к контейнеру напрямую, не устанавливая зависимости на локальную машину.
**Installing Remote Development Extension:**
1. Open VS Code
2. Go to Extensions (or press Ctrl+Shift+X)
3. Search for "Remote - Containers"
4. Install the extension from Microsoft
[VS Code Remote Development Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)
**Working with Containers:**
After installing the extension:
1. Click on the green button in the bottom-left corner of VS Code
2. Select "Remote-Containers: Attach to Running Container" from the options
3. Choose your Strapi container from the list
**Setting Up Auto Save:**
Auto Save is crucial for efficient development. To enable it:
*For Windows 10 Pro/Enterprise/Education:*
1. In VS Code (while connected to container), go to File > Auto Save
2. Or go to Settings (Ctrl+,) and search for "Auto Save"
3. Set "Auto Save" to "afterDelay" and adjust the delay time as needed
*For Windows 10 Home:*
Since Windows 10 Home has some limitations with Docker, you might need to manually configure Auto Save:
1. Open VS Code Settings (Ctrl+,)
2. Search for "Auto Save"
3. Set "Files: Auto Save" to "afterDelay"
4. Set "Files: Auto Save Delay" to your preferred value (e.g., 1000 for 1 second)
This ensures your changes are automatically saved, which is particularly important when working with containerized applications.
> 💡 Remember that all file operations happen inside the container, so any changes you make will be reflected directly in the container environment without needing to rebuild.
{
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 1000
}
Контейнеризация — это не просто упаковка приложений, а создание предсказуемых, масштабируемых сред, которые эволюционируют вместе с потребностями проекта. Docker и Strapi — идеальное сочетание гибкого управления контентом и стабильных деплойментов.- Кэтрин Дженкинс, CTO CloudScale
Это исследование имеет несколько важных импликаций для профессионалов в этой области:
Dockerизация Strapi приносит серьёзные выгоды командам разработки: от стабильности окружений до упрощённого деплоя. Следуя описанному подходу, вы построите надёжную Docker-инфраструктуру для разработки, тестирования и боевого запуска. Независимо от того, форкаете ли вы наш шаблон или создаёте конфигурацию с нуля, контейнеризация окупается повышением продуктивности и надёжности приложения.
Начните с нашей готовой Docker-конфигурации для Strapi. Клонируйте репозиторий, следуйте инструкциям в README, и ваш экземпляр Strapi будет работать в Docker за считанные минуты.
Сделать форк стартового репозитория