Первоначально опубликовано Блог Ашрафула
Мы уже знаем о Докер ? Если нет, пожалуйста, прочитайте это ( Docker в ) сначала.
❓ Почему я должен использовать Docker в местном развитии?
Вам нравится проводить больше времени на настройку окружающей среды? Если да? Просто закройте окно. Может быть, вы не в нужном месте. Хорошо, больше нет сплетен. Позвольте мне рассказать вам настоящую историю.
Недавно я купил MacBook для моего личного развития. Я был вышел, чтобы написать код на нем. Но до этого я должен настроить свою среду разработки, чтобы начать с нее. Таким образом, без задержки я начал клонировать репозитории из GitHub, а затем устанавливать свои зависимости Dev. Серьезно в конце дня я чертовски устал делать это. Один из моих домашних животных использовал узел (v8.10. *), Mongodb и реагировать. Другие проекты имеют последнюю версию узла и других зависимостей. Так что у меня были проблемы с настройкой своей среды, так как я был новичок в Mac OS. Итак, наконец я решил написать Dockerfile
во всех моих услугах и Docker Compose
запустить их вместе.
❓ Что такое Docker?
Compose-это инструмент для определения и запуска мультиконтражных приложений Docker. С помощью Compose вы используете файл YAML для настройки услуг вашего приложения. Затем, с одной командой, вы создаете и запускаете все службы из вашей конфигурации. Подробнее Здесь Анкет
💫 Пример архитектуры
Предположим, у нас есть два разных сервиса и одна служба базы данных.
- Приложение Nodejs (порт: 5000)
- React App (порт: 5001)
- MongoDB (порт: 27017)
Мы собираемся написать Docker-compose.yml
Запустите и запустите их с помощью одной команды в любое время и в любом месте. Поскольку я не собираюсь объяснять кодовую часть, а не Docker
и докер-состав
, Итак, у меня уже есть приложение с этой архитектурой. Вилка и клонировать приложение из GitHub и измениться самостоятельно.
Как вы уже видели, мы собираемся запустить все эти услуги/приложения в разных портах, Таким образом, нам нужно разрешить эти порты в контейнере и физической машине (ваша машина). Например, если вы уже установлены на своем компьютере, вы не можете использовать 27017
Порт для нового контейнера Mongo. Итак, что мы можем сделать, мы можем переслать порт из контейнера Docker в физическую машину. Как вы думаете, это просто.
🚀 Давайте настроим его
- Клонировать репо,
git clone https://github.com/iashraful/graphql-mongo-todo.git
CD GraphQl-Mongo-Todo
- Open
Docker-compose.yml
с вашим любимым редактором. (Не волнуйся, я объясню. 😎). Вы увидите подобное, как следующее.
Docker-Compose.yml
version: '3.5' services: react_client: build: ./client command: sh -c "yarn install && yarn start" environment: - NODE_ENV=development - PORT=5001 ports: - '5001:5001' working_dir: /app/client volumes: - ./client:/app/client:cached node_server: build: ./server command: sh -c "yarn install && yarn dev" environment: - NODE_ENV=development - PORT=5000 ports: - '5000:5000' working_dir: /app/server volumes: - ./server:/app/server:cached depends_on: - mongodb mongodb: image: mongo expose: - '27017' environment: - MONGO_INIT_DB_DATABASE_NAME='graphql-todo' volumes: - ./db:/data/db ports: - '27019:27017'
Версия: ‘3.5’
Эта версия указывает на то, какую версию двигателя Docker вы используете. В моем случае я использую самый последний Docker Engine 19. *. *. Итак, я использую версию 3.7. Смотрите Полное руководство по управлению версией
Сервисы
Это просто и просто. Сколько служб вы хотите запустить, используя этот файл Compose. Моим три. Узел, реаги, монго.
React_client, node_server, Mongodb
Название каждой услуги. Под каждой службой необходимо указать конфигурацию.
Build: [Путь каталога]
Какой каталог вы собираетесь использовать для конкретных служб. Вы можете указать относительный путь здесь.
Команда: [любая команда оболочки]
Команда полностью зависит от выбранного вами изображения. Если вы выберете изображение, основанное на Linux, то вы знаете, что Bash — оболочка по умолчанию. Таким образом, без каких -либо проблем вы можете использовать команду Bash. Если вы не смущены изображению, которое я выбрал здесь? Не волнуйся, я поговорю об этом.
Окружающая среда
Любая переменная среды вы можете пройти через среда
Анкет
порты
Это важно знать, как включить порт для контейнера и отобразить порт физической машины. Здесь 5000: 5000
означает Контейнерный порт: порт физической машины
Анкет
Working_dir
Это простой путь контейнера, где будет скопирован ваш код.
тома
Объемы наиболее важно знать, когда вы находитесь на местном развитии. Потому что вы не любите перестроить и запускать контейнер после каждого изменения. Таким образом, это создает отображение между физическим машинным кодом и кодами рабочих каталогов контейнера.
зависит от
Это потрясающая функция, которую мы имеем. Предположим, у вас есть пять услуг, а одна услуга зависит от других. Как и наш сервис Nodejs, зависит от MongoDB. Итак, я положил зависит от: Mongodb
изображение
Изображение — это изображение Docker, которое мы используем в качестве базового изображения. Как мы уже знаем из нашего Предыдущий пост что, У каждого докера должно быть базовое изображение. . Это тег изображения, который мы можем использовать для определения изображения. Если вы посмотрите внимательно, я не определил изображение в React_client
и node_server
Анкет Но на Монго я определил Изображение: Mongo
Анкет Ты знаешь почему?? Посмотрим, почему.
❓ Разве мы не можем использовать Dockerfile?
Да мы можем. Открыть каталог клиентов и сервера , вы увидите Dockerfile там. Даже когда вы командуете компьютером, чтобы запустить файл Docker Compose, ваш компьютер находит каталог сборки и найдите в нем Dockerfile. Затем выполнить, как есть.
🐶 О, достаточно 💣 Давайте запустим проект.
- Откройте свой терминал/консоль.
$ Docker-Compose
- Подождите несколько мгновений и наслаждайтесь.
⛄ Основные команды Docker-Compose.
Docker-Compose Up
➡ Запустите файл Docker Compose.Docker-Compose-Build
➡ Постройте и запустите файл Docker Compose.Docker-Compose Up <Название службы>
➡ Запуск конкретных сервисов.Docker-Compose Start
➡ Начните последние контейнеры.Docker-Compose Stop
➡ Остановите последние беговые контейнеры.Docker-Compose Resatart
➡ Перезагрузите последние беговые контейнеры.Docker -Compose Logs -f <имя службы>
➡ Журнал из конкретной службы.Docker-Compose Exec <имя службы> Bash
➡ SSH в конкретный контейнер.
🚩 Это все. Спасибо за чтение! 😆
Оригинал: «https://dev.to/ashraful/docker-for-local-development-6ak»