August 4, 2023

Запуск Strapi v4 в Docker

Инструкция

Docker-compose-файл может выглядеть следующим образом:

version: '3.7'

networks:
    frontend:
        external:
            name: frontend-network
    backend-network:
        external:
            name: backend-network

            
services:
    strapi-app:
        image: gitlab.org/docker/images/strapi:4.11.5-1.0.0
        logging:
            driver: 'json-file'
            options:
                max-file: '2'
                max-size: '5m'
        container_name: strapi
        restart: always
        env_file: .env
        environment:
            PORT: ${PORT}
            DATABASE_CLIENT: ${DATABASE_CLIENT}
            DATABASE_HOST: ${DATABASE_HOST}
            DATABASE_PORT: ${DATABASE_PORT}
            DATABASE_NAME: ${DATABASE_NAME}
            DATABASE_USERNAME: ${DATABASE_USERNAME}
            DATABASE_PASSWORD: ${DATABASE_PASSWORD}
            JWT_SECRET: ${JWT_SECRET}
            ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
            APP_KEYS: ${APP_KEYS}
            API_TOKEN_SALT: ${API_TOKEN_SALT}
            NODE_ENV: ${NODE_ENV}
        volumes:
            - ./../../app/src:/opt/app/src
            - ./../../app/public/uploads:/opt/app/public/uploads
            - ./../../app/config:/opt/app/config
        networks:
            - backend-network

volumes:
  strapi-data:
    name: "strapi-data"

Создаем файл с переменными окружения с именем .env

Пример заполнения переменных окружения

PORT=3000 — порт, по которому доступно приложение Node.JS.
HOST_URL — адрес, по которому приложение будет доступно в браузере.
API_HTTP_SCHEME=http:// — при локальной разработке используется http-схема.
API_HTTP_DOMAIN=admin.hostname.local — API-адрес для получения изображений.
CLIENT_API_URL=http://admin.hostname.local/api — адрес, по которому осуществляется получение данных API с клиента через DNS-сервер.
SSR_API_URL=http://strapi-nginx/api — адрес, по которому будем получать данные при выполнении запроса с сервера NODE JS.
ASSET_PREFIX= — используется для отображения статики.
STRAPI_PORT=1337 — порт, на котором работает Strapi.
APP_KEYS="examplekey1,examplekey2" — секретные ключи для cookies.
API_TOKEN_SALT=example — используется для шифрования канала.
ADMIN_JWT_SECRET=examplekey — JWT-ключ для административной панели.
JWT_SECRET=examplekey — JWT-ключ для пользовательских прав.
NODE_ENV=development — запуск сборки разработчика, production — prod режим.
DATABASE_CLIENT=postgres — используемый клиент базы данных.
DATABASE_HOST=strapiDB — название хоста, на котором развернута база данных.
DATABASE_PORT=5432 — порт, на котором работает postgres.
DATABASE_NAME=strapidb — название базы данных.
DATABASE_USERNAME=strapi — имя пользователя базы данных.
DATABASE_PASSWORD=12345678 — пароль к базе данных.

Запускаем приложение с помощью команды

docker-compose up -d

В файле /etc/hosts необходимо указать хост, по которому наше приложение будет доступно с браузера. В нашем случае это:

127.0.0.1 admin.hostname.local

Вернуться в Chulakov Dev