Comments 16
поднять проект на PHP в Docker под Windows, так как из описания вообще не понял где там именно PHP проект, а хотелось бы почитать про все шаги, которые позволят вывести хелло ворлд или как в любом другом первом туториале
Это все же один из основных инструментов. Люди с ним могут долго ковыряться.
А когда команда из 62 человек, гигабайты кода, терабайты данных…
Спорно. Логировать всё смысла нет вообще, а log_level=DEBUG и на проде не будет.
Где же была эта статья неделю назад… Пришлось угробить 2 дня и с 3-го подхода проекты были подняты и под windows. От себя добавлю, если у вас все работает под linux, но выдаёт рандомные ошибки, то выполните(я все выполнял в PowerShell) для всех dockerfile и всех sh файлов, которые участвуют в сборке образов
dos2unix Диск:/путь/до_файла
А так же надо помнить о разнице в сетевом окружении между Linux и Windows. В Linux внутренняя сеть докера видна снаружи системы, а в Windows она за NAT'ом(Docker vEthernet) и не видна снаружи, и это приводит к проблеме с Xdebug, так как remote_connect_back=1 не работает в принципе. Если кто то знает как пробросить трафик из внутренней сети во внешнюю, напишите.
Для нашей компании мы выбрали следующее решение:
- Создал папку mods_available
- В Dockerfile добавил строку
ADD ./mods_available/*.ini /etc/php/7.0/mods_available/
- в корне проекта добавили в .gitignore запись игнорить все файлы ini в mods_available
- В папку положил .gitkeep и xdebug.ini.dist
Содержимое xdebug.ini.dist
zend_extension=xdebug.so # или как там, не помню на память
xdebug.remote_autostart = 0
xdebug.remote_enable = 1
xdebug.remote_host = 10.0.75.1 # Сюда написать IP хоста, из виртуального адаптера docker'а
xdebug.remote_mode = "req"
xdebug.remote_port = 9000
xdebug.idekey = "PHPSTORM"
Если надо использовать xdebug, надо просто скопировать и переименовать xdebug.ini.dist в xdebug.ini и прописать в него свой IP. Это будет работать и в Windows и Linux. И даёт возможность не вносить изменения в файлы под git'ом.
И да все это работает на windows 10 под Hyper-v, без VirtualBox и др.
Посмотреть можно командой docker network ls
Пользуюсь им постоянно при разработке. И у меня MacOS
Проблема: невозможно хранить файлы БД на локальном диске. Это следует принять как аксиому под Windows и попытаться найти приемлемое решение, чтобы данные хранились вне контейнера. Для Windows это — named volume. Всего пара строк решает эту проблему
В этом есть и правда и ложь.
Если у вас GPT то монтирование локальной папки с базой не отличается от монтирования других папок.
А вот если у вас MBR то следующая строка в docker-compose.yml решит эту проблему (пруф):
command: ['--innodb_use_native_aio=0']
Плюс используя volume для БД база работает на порядок медленнее(на глаз раза в 2)
Плюс укажите в статье необходимость ставить «Docker toolbox for Window» вместо «Docker for Windows» ибо последнее не у всех заводится.
docs.docker.com/toolbox/toolbox_install_windows
Legacy desktop solution. Docker Toolbox is for older Mac and Windows systems that do not meet the requirements of Docker for Mac and Docker for Windows. We recommend updating to the newer applications, if possible.
Это проблемы под тот докер, что Линукс виртуалку под виндой создаёт? Не под тот, который использует LinuxOnWindows подсистему или как там её? Или такой так и не выпустили?
Помнится году так в 2016-м нам анонсировали, что вот-вот будет нативная поддержка в Windows докера именно через линукс подсистему, пытаясь убедить на переход на Windows Server с Ubuntu как основы гибридного облака. Похоже "вот-вот" ещё не наступило, погуглил сейчас новости — только клиента так можно запустить.
Как поднять проект на PHP в Docker под Windows