artem90
@artem90
TeamLead, Developer

Как вы используете docker для разработки в Windows?

На данный момент использую докер через virualbox с ОТКЛюченным шарингом папок.
Сейчас для выгрузки изменений в контейнер использую скрипт, который по сути выполняет:
- docker-compose up
- docker cp
- docker exec ... chown

Последние две команды выполняются 15-40 сек.
Возможно, есть другие более правильные способы деплоя кода в контейнер?

P.S. Shared папки не использую т.к. с ними чистое symfony приложение выполняется 2-6 сек.
  • Вопрос задан
  • 1619 просмотров
Пригласить эксперта
Ответы на вопрос 6
artem90
@artem90 Автор вопроса
TeamLead, Developer
Итак, нашел не самое элегантное решение, но вполне рабочее:

ред. Оказывается не совсем рабочее.
После перезапуска виртуалки необходимо заново выгружать все файле проекта, при этом заранее исправавив права доступа к /c/Users

Оставляю пока тут, может у кого-то появятся идеи


1. Отключаем общие папки в настройках виртуальной машины.
2. Включим sftp для виртуальной машины:
# Открываем машину в virtualbox и редактирем конфиг ssh сервера
vi /usr/local/etc/ssh/sshd_config
# и добавить строку
Subsytem sftp internal-sftp
# для тех, кто не работал в vi
# сначала жмем i
# затем добавляем нужную строку 
# жмем ESC, жмем :
# вводим (внизу слева) wq жмем enter

3. Перезапускаем виртуалку, чтоб общие папки более не были доступны и перезапустился сервер ssh (я не нашел как его перезапусить по типу service sshd restart)
4. Создадим нужный путь:
mkdir -p /c/Users
chown 0777 /c/Users -R

5. Сгенерируем ppk ключ для подключения.
Надо скоримть программе puttygen ключ %userprofile%\.docker\machine\machines\default\id_rsa

Далее действия выполняются в Phpstrom
6. Настраиваем подключение в шторме к виртуалке по sftp, указав сгенерированный в п.5 ppk-файл. Имя пользователя docker. Заодинм укажем, что файлы должны загружаться автоматически.
cd0a38d05bd14b15bf6e584b8bb35a93.png
7. Настраиваем маппинг файлов. Обратите внимание, что local path и deployment path должны совпадать
451a97734627478f8e4c674b0bcb9eb0.png
8. Указываем, что мы хотим менять права на загруженных файлах и папках на 0777 автоматически при загрузке.
249b012650b64cd9b741896131f467af.png
На этом все.
Теперь можно вносить изменения в проект, которые будут автоматически загружены в docker виртуалку по sftp.
Docker при этом крутится достаточно быстро - dev окружение symfony грузится за 60-150 мс.

Больше нам не потребуется заходить в саму виртуалку, все будет так же работать через docker консоль.
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
между докером и виртуалкой можно примаунтить каталог, серьезных потерь производительности быть не должно. На счет шаред каталогов - действительно стоит отключить.
Ответ написан
@jaxel
Никак. Что не пытался сделать, нормально работать с виртуалкой с симфони под виндой невозможно. Плюнул, и поставил для работы дебиан.
Ответ написан
Комментировать
taliban
@taliban
php программист
Почему вы используете ОТКЛюченный шардинг? Удобней ведь включить папочку общую и не надо никуда заливать код.
Ответ написан
@de1m
Это давняя проблема в virtualbox'e. Когда происходит обращение к папки, то он замирает. Я эту фигню ещё с третьей версии наблюдаю, хотя раньше намного выраженее была.

Я не знаю как вы создаёте виртуалку, я пользуюся для этого "vagrant" у него можно вместо sharedfolder использовать rsync (тут), но я не знаю делает ли он синхронизацию только при старте или при каждом изменении содержимого папки.

Можно так-же тупо монтировать шару с винды в виртуалку через "cifs"
Ответ написан
Комментировать
@Vaavaan
Для разработки, тем более в Windows нужен не Docker, а Vagrant.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы