В документации приведены все необходимые шаги для успешного запуска проекта.
Необходимо клонировать репозиторий Winter CMS с использованием команды:
git clone https://github.com/wintercms/winter.git
cd winterНеобходимо создать файл .env на основе примера .env.example:
cp .env.example .envПосле создания файла необходимо открыть его в текстовом редакторе и проверить параметры базы данных. Пример конфигурации:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=wintercms
DB_USERNAME=root
DB_PASSWORD=secretНеобходимо убедиться, что файл docker-compose.yml содержит правильные настройки. Пример содержимого:
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: wintercms-app
ports:
- "8080:80"
volumes:
- .:/var/www/html
environment:
- DB_HOST=db
- DB_DATABASE=wintercms
- DB_USERNAME=root
- DB_PASSWORD=secret
depends_on:
- db
db:
image: mysql:8.0
container_name: wintercms-db
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: wintercms
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:Необходимо создать файл Dockerfile в корне проекта со следующим содержимым:
# Базовый образ
FROM php:8.2-apache
# Установка необходимых зависимостей
RUN apt-get update && apt-get install -y \
git \
unzip \
libzip-dev \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libonig-dev \
libxml2-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd pdo_mysql zip mbstring xml
# Установка Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Настройка Apache
COPY . /var/www/html/
RUN chown -R www-data:www-data /var/www/html \
&& a2enmod rewrite
# Копирование конфигурации Apache
COPY apache.conf /etc/apache2/sites-available/000-default.conf
# Установка прав доступа
RUN chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache
# Прослушивание HTTP-интерфейса
EXPOSE 80
# Запуск Apache
CMD ["apache2-foreground"]Необходимо создать файл apache.conf в корне проекта со следующим содержимым:
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>Необходимо создать файл .gitlab-ci.yml в корне проекта со следующим содержимым:
stages:
- build
- test
- deploy
variables:
DOCKER_DRIVER: overlay2
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
build:
stage: build
script:
- docker build -t $IMAGE_TAG .
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push $IMAGE_TAG
test:
stage: test
script:
- docker run --rm $IMAGE_TAG php artisan config:cache
- docker run --rm $IMAGE_TAG php artisan route:list
deploy:
stage: deploy
script:
- echo "Deploying to production..."
# Здесь можно добавить команды для деплоя, например, через SSH или Kubernetes
only:
- mainНеобходимо выполнить сборку Docker-образов с помощью команды:
docker-compose up --buildПосле запуска контейнеров необходимо установить зависимости PHP внутри контейнера:
docker exec -it wintercms-app composer installНеобходимо сгенерировать ключ приложения Laravel/Winter CMS:
docker exec -it wintercms-app php artisan key:generateНеобходимо выполнить миграции для базы данных MySQL:
docker exec -it wintercms-app php artisan migrateНеобходимо очистить кэш Laravel, чтобы применить изменения:
docker exec -it wintercms-app php artisan config:clear
docker exec -it wintercms-app php artisan cache:clear
docker exec -it wintercms-app php artisan view:clearНеобходимо открыть браузер и перейти по адресу:
http://localhost:8080
Если все настроено правильно, отобразится страница Winter CMS.
Для остановки контейнеров необходимо выполнить:
docker-compose downДля просмотра логов контейнеров необходимо использовать:
docker logs wintercms-app
docker logs wintercms-dbДля перезапуска контейнеров необходимо выполнить:
docker-compose restartЕсли возникает ошибка с правами доступа к файлам (например, storage/logs/system.log), необходимо выполнить следующие команды:
docker exec -it wintercms-app chmod -R 775 storage/cms/cache storage/framework/cache bootstrap/cache storage
docker exec -it wintercms-app chown -R www-data:www-data storage/cms/cache storage/framework/cache bootstrap/cache storageЕсли база данных не создается автоматически:
- Подключиться к контейнеру MySQL:
docker exec -it wintercms-db mysql -u root -p - Ввести пароль (
secret). - Создать базу данных вручную:
CREATE DATABASE wintercms;