Как разработчик, который работает над парой проектов, я хотел найти способ, который
- Время настройки будет как можно быстрее
- Было бы легко поделиться моим кодом и настройкой проекта с товарищами по команде
- Я хочу, чтобы моя среда разработки была как можно ближе к производству
Поэтому я начал искать способ сделать это, сначала я подумал о Git
, но проблема с Git
это то, что время настройки не является оптимальным — Как мне автоматически настроить Переменные среды
? или синхронизировать Git Hooks
Для моего проекта, что, если мой проект использует новый язык программирования или версию? Я не хочу начинать устанавливать и управлять версиями на моем локальном ПК ..
И я не хочу платить за какое -либо решение.
Чем я начал думать об использовании Docker
Как моя среда разработки, я могу запустить Докер
Как «сервер личного развития» и настроить все, что мне нужно, внутри Docker Image
— Компилятор/интерпретатор, переменные среды, зависимости и многое другое, и когда я заканчиваю кодирование, я могу использовать то же самое Docker Image
В моей производственной среде
Что такое Docker
« Docker
— это открытая платформа для разработки, доставки и запуска приложений. Docker
Позволяет вам отделить ваши приложения от вашей инфраструктуры, чтобы вы могли быстро доставить программное обеспечение. С Docker
Вы можете управлять своей инфраструктурой так же, как управлять своими приложениями. Используя преимущества Docker's
Методологии для доставки, тестирования и быстрого развертывания кода, вы можете значительно сократить задержку между написанием кода и выполнением его в производстве ». От Docker
Официальная документация, вы можете прочитать больше здесь
Строить
Я использую это Dockerfile
как шаблон от Здесь Чтобы построить мой Docker Image
, Я устанавливаю OpenSSH-сервер
Так что я могу использовать его так же, как сервер разработки, и поделиться им со своими товарищами по команде.
FROM python:3.6 ARG GIT RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:MYSUPERSECRETROOTPASSWORD' | chpasswd # According to your linux distribution this line my differ RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile EXPOSE 22 RUN echo ' \n\ git clone $GIT ~/code \n\ cd ~/code \n\ git pull \n\ pip install -r requirements.txt' > ./run.sh # Also configure hooks, environment variables and more RUN sh ./run.sh RUN echo '/usr/sbin/sshd -D' >> ./run.sh CMD ["sh", "./run.sh"]
Запустить с помощью:
> docker build --build-arg GIT=GITREPURL -t my_cool_docker .
При выполнении Docker Build
это будет git клон
Мой проект и установка Pip
зависимости и все, что мне нужно сделать, также я определяю то же самое ./run.sh
Файл для выполнения каждый раз, когда я использую Docker Run
Чтобы держать мой Docker в курсе новых коммитов и более
Бежать
Я использую эту команду, чтобы запустить свое изображение
> docker run -dP my_cool_docker 37d6e53cb27396467a10c7361d319d28d0197a7b5dc7347bb39c251dff7403dc > docker port 3 22/tcp -> 0.0.0.0:32768 > ssh root@localhost -p 3276 The authenticity of host '[localhost]:32768 ([::1]:32768)' can't be established. ECDSA key fingerprint is SHA256:z4x3yWVSJZAoswgEa0utt5jSv0Mt0Ex6sMY8a4CFCnE. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:32768' (ECDSA) to the list of known hosts. root@localhost's password: Linux 37d6e53cb273 4.9.184-linuxkit #1 SMP Tue Jul 2 22:58:16 UTC 2019 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@37d6e53cb273:~# ls -l total 4 drwxr-xr-x 1 root root 4096 Dec 14 09:45 code
Итак, как вы видите, я запускаю Изображение
используя Отметь
флаг и разоблачить все
Порты, Тогда я использую ssh
В Localhost с открытым портом введите пароль Super Secret Root И у нас есть личный сервер разработки, который на самом деле является контейнер Docker
Запуск на вашем личном компьютере!
Преимущества
- Однажды настройка для всего, что мне нужно
- Та же среда для разработки и производства
- Легко поделиться с товарищами по команде
Недостатки
- Вы можете потерять данные, если ваш
контейнер
крушение - Подходит для тех, кто использует контейнеры в производстве
Наслаждайтесь 😋
Нравится этот пост? Поддержите меня через Patreon Подписаться на мой YouTube канал
Оригинал: «https://dev.to/eranelbaz/docker-dev-debug-deploy-199l»