Git Product home page Git Product logo

dl's Introduction

DL Logo

Deploy Local — site deployment assistant locally.

A convenient wrapper over docker-compose, which simplifies the local deployment of the project.

Release Software License GitHub Actions Go Report Card Go Doc

Deploy Local — is a command line interface designed to help developers quickly deploy projects to their local machine.
DL is a wrapper on top of Docker and docker-compose, in basic use no additional software or libraries are required to be installed.

cast

Supported

Supported OS: Linux, macOS, Windows (via WSL2)
Supported architectures: x64, arm64
Supported frameworks and CMS: Bitrix, Laravel, WordPress, and many others with manual settings

Features

  • Support for PHP versions (apache and php-fpm) 7.3, 7.4, 8.0, 8.1, 8.2, 8.3
  • Support for MySQL, MariaDB and PostgreSQL
  • Downloading the database and files from the production server
  • Redis
  • Memcached
  • Nginx
  • Cross-platform
  • Interception of mail sent via php
  • Portainer - docker container management system
  • Does not require root access (when installing the executable file in the user's directory)
  • Accessing sites from the browser via .localhost or .nip.io
  • Ability to add custom docker-compose.yaml files to DL configuration

Dependencies

  • docker (more than v22)
  • docker-compose v2

The docker compose (as plugin) supported

Install

Choose the installation method that suits you:

See all available installation methods https://local-deploy.github.io/getting-started/install

Upgrading from version 0.* to version 1.*

Just reinstall the application using one of the above methods. Updating using the built-in commands is not possible.

Usage

  1. Start service containers (traefik, mailhog, portainer) with the command (at the first start):

    dl service up
  2. Create .env file in the root directory of your project with the command:

    dl env
  3. Set the required variables in the .env file

  4. Run the command if you need to download the database and/or files from the production-server:

    dl deploy
  5. Run local project with command:

    dl up

See quick reference for available commands.


Remember that dl is meant for development purposes, not production.

dl's People

Contributors

dependabot[bot] avatar mrdeff avatar varrcan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

dl's Issues

Передача параметров через -- при exec

Пример
dl exec php artisan make:migration add_json_field_to_query_result --table=query_data

в ответ получим
`
Error: unknown flag: --table
Usage:
dl exec [command] [flags]

Examples:
dl exec composer install
dl exec "ls -la"

Flags:
-h, --help help for exec

Global Flags:
--debug Show more output

Error: unknown flag: --table
`

а должны передать эти параметры в контейнер

возможности исключений таблиц.

есть ли возможность исключать таблицы таким образом, чтобы схема переносилась, а данные - нет? Есть ряд проектов где существование таблиц необходимо, но они слишком тяжелые и dl deploy длится часы

Bad Gateway

На macOS-Ventura не работает образ 8.1-apache. Контейнер запускается нормально, но при попытке открыть url в браузере показывается сообщение "Bad Gateway". На линукс работает вроде нормально.
8.2-apache работает корректно

Docker version 20.10.22
Docker Compose version v2.15.1
image

Memcache

image

image

PHP не видит модуль, хотя я его указал в .env. Хочу использовать для хранения сессий
image

Не подскажете как можно исправить?

Ошибка после обновления

Сейчас обновился до версии 0.5.2, и вот такая пасхалка прилетела при запуске проекта. Посмотрите?)
Снимок экрана 2022-12-08 в 19 26 06
ОС: Mac

Нашел важную проблему

Неоднократно возникали случайные проблемы на разных компах у разных людей. Оказывается если проект размещен по пути, в котором встречается кириллица, то будут проблемы. При чём часто случайны.
например если закинуть ~/Рабочий стол/projects/veryValuableProject то шанс 146%, что не будет работать dl deploy

mysqldump

Добрый день. На некоторых гигантских проектах с большой бд иногда требуется обновить конкретню таблицу с прода.

хотелось бы иметь возможность примерно следующего функционала (пример воображаемой команды):
~dl mysqldump b_user, b_iblock_section

EXCLUDED_TABLES, возможность задания по регулярке

Привет.
Как такая идея, чтобы в EXCLUDED_TABLES была возможность задачи таблиц игнорирования через *

Т.е. чтобы не писать например
EXCLUDED_TABLES=b_search_content_stem, b_search_content_title
а задать сразу через *
EXCLUDED_TABLES=b_search_*

и так исключим все таблицы к модулю поиска если применительно к битриксу

imagick

Подскажите как быть с imagick расширением.

PHP_MODULES="imagick" в .env файле приводит к тому, что контейнер стартует не корректно и по адресу открывается 404
Есть ли корректный способ включения?

dl deploy -f

Из разряда пожеланий, добавить mode

  1. через архив как сейчас (в этот режим надо добавить проверку места, а влезет ли архив)
  2. использовать rsync

Директория для конфигов

Поставил заново утилиту, но после первого запуска не появились кфг в директории ~/.config/dl/config-files/. Папки dl просто нет. Что-то поменялось в расположении?

"dl deploy" question

image

На компе у коллеги пытались развернуть первый проект.вылетел с такой ошибкой. Можете подсказать в какую сторону думать?

Вопрос

Как-то можно скачивать файлы с сервера командой dl deploy, если в корне проекта нет папки bitrix, но есть _BITRIX?

HTTP 2

Можно ли что-то придумать HTTP 2?
Очень хотелось бы прорабатывать на локальное машине вещи вида EventSource (Web Api)...

многосайтовость

ни разу не пользовались dl чтобы поднять проект с многосайтовостью, где bitrix, upload, local через симлинки работает.

Подскажите как поднимать такой проект если его структура выглядит примерно так.
../htdocs/www/

bitrix
upload
local

shop.site.ru/ (root первого сайта)

 - bitrix -> ../bitrix
 - upload -> ../upload
 - local -> ../local

site.ru/ (root второго сайта)

 - bitrix -> ../bitrix
 - upload -> ../upload
 - local -> ../local

в конфигах есть DOCUMENT_ROOT, но как сдеалть что-то типа того
DOCUMENT_ROOT=/var/www/html/site, /var/www/html/shop.site ?

8.0-fpm setcookie(): "domain" option cannot contain ",", ";", " ", "\t", "\r", "\n", "\013", or "\014" (0)

При использовании PHP_VERSION=8.0-fpm и битрикса последних версий
ловим эксепшн

[ValueError] setcookie(): "domain" option cannot contain ",", ";", " ", "\t", "\r", "\n", "\013", or "\014" (0) /var/www/html/bitrix/modules/main/lib/httpresponse.php:244 #0: setcookie(string, string, array) /var/www/html/bitrix/modules/main/lib/httpresponse.php:244 #1: Bitrix\Main\HttpResponse->setCookie(object) /var/www/html/bitrix/modules/main/lib/httpresponse.php:200 #2: Bitrix\Main\HttpResponse->writeHeaders() /var/www/html/bitrix/modules/main/lib/httpresponse.php:40 #3: Bitrix\Main\HttpResponse->flush(string) /var/www/html/bitrix/modules/main/lib/response.php:91 #4: Bitrix\Main\Response->send() /var/www/html/bitrix/modules/main/lib/application.php:269 #5: Bitrix\Main\Application->end() /var/www/html/bitrix/modules/main/classes/general/main.php:3474 #6: CAllMain::FinalActions(string) /var/www/html/bitrix/modules/main/include/epilog_after.php:61 #7: require(string) /var/www/html/bitrix/modules/main/include/epilog.php:3 #8: require_once(string) /var/www/html/bitrix/footer.php:4 #9: require(string) /var/www/html/index.php:354 ----------

сталкивался с таким ? на апаче все заводится без проблем
проблема моделируется только если куки пусты и он пытается их поставить

взаимодействие локальных площадок

У меня 2 запущеных проекта. К примеру shop.localhost и crm.localhost

К сожалению запрос с одной площадки на апи соседней не работает.
Если проверить какой ip резолвится внутри площадки по хосту, то получаем 127.0.0.1

В итоге приходится общаться через nip.io

Хотел уточнить возможно ли, чтобы и внутри площадок резолвились корректные локальные ip адреса

Реализация команды dl deploy -c

Суть, команда скачает конфиг файлы с удаленного сервера и заменит в них данные для подключения к базе на локальные докера.

Для битрикса это файлы
bitrix/.settings.php и bitrix/php_interface/dbconn.php
Для лары
.envhttps://docs.github.com/github/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

Вопрос по Redis

Скачал локально битриксовый проект, который очень зависим от редиса.
в .env добавлен REDIS=true
Но имеем ошибку

[Error] 
Class 'Redis' not found (0)

Подскажите пожалуйста как следует себя вести в проектах с редисом, Нужно залесть в контейнер через dl bash -r и установить php-redis или каким-то иначе?

Error: Process exited with status 2

dl_error
Происходит ошибка с конкретным проектом. Есть ли понимание на что следует обратить внимание? Другие проекты вроде нормально качаются.

редирект на статику

Часто в проектах ссылка на ститические файлы, например в каталоге, имеет формат /upload/..., было бы отлично добавить конфиг в .env, в который указать домен для статических файлов, которые отсутствуют физически на локальной машине.

nodejs

Добрый день.
Было бы не плохо добавить возможность запуска для сборки nodejs, пригодится для laravel
с возможностью выбора версии node

Вебсокеты

На некоторых проектах в работе используются веб-сокеты. Не хватает возможности настраивать и запускать их локально. Будет круто, если эта возможность появится

Настройка порта для БД

Сейчас нет возможности подключаться к БД например из IDE, так как нет проброса порта на локальную машину.

Предлагаю в кфг docker-compose-mysql.yaml сделать параметр "port" и подставлять туда значение из .env, соответственно у каждого проекта будет доступен свой порт для подключения и они смогут существовать параллельно.
Еще лучше при запуске проекта (dl up) сделать проверку на доступность данного порта (который задаем в .env), и выкидывать ошибку, что этот порт уже занят другим контейнером

Проксирование traefik'ом по портам 3306 и 5432

Поможет обладателям компов на шындоуз с wsl
Что может исправить:
Сейчас при попытке подключиться к контейнеру с бд по айпи из dl ps запущенному в wsl, не получается
Даже если сделать мирроринг сетей между хостом и wsl, можно лишь из wsl получить доступ к сетям на хосте, а не наоборот

проблема с конфигом

оказывается если в перечислении в EXCLUDED_FILES= допустить пробел, например в моём случае перед bitrix/backup, то dl deploy будет падать с ошибкой. При чём ошибка слабо информативно даже с флагом --debug пишет exiting with status 2.

Зашел на сервер и руками повторил команду которая выводилась в debug. - получил более подробную ошибку, что папки bitrix/backup не существует.

PHP 8.2

Просьба добавить в репозиторий образы с php 8.2

Запуск контейнеров через docker compose api

Обновление зависимостей docker ломает сборку под darwin и вызывает ошибки в десятке файлов. Не обновлять нельзя из-за проблем с безопасностью старых пакетов.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.