Создайте локальную среду разработки Docker с нуля

Docker

Боль местного развития

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

Во время разработки вам может понадобиться зависимость от каких-то других сервисов.Лучше надеяться, что проблем не будет.Возможно, вам придется переписать для настройки вашего окружения, потому что все ваши зависимые сервисы находятся в вашем единственном рабочем пространстве.

Если операционная система вашего партнера не является единообразной, вы также можете столкнуться с некоторыми несоответствиями при анализе различных метасимволов.

Перед подключением к Интернету вы можете разрабатывать и отлаживать локально и работать без сбоев, но после развертывания на сервере возникнут различные проблемы. Потому что в большинстве случаев наша среда разработки и производственная среда не совпадают.

Возможно, в следующий раз вам нужно будет использовать новую среду разработки, чтобы открыть проект. Вы будете сталкиваться с вышеуказанными проблемами снова и снова.

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

чтоDocker

Docker — это движок контейнера приложений с открытым исходным кодом, который позволяет разработчикам упаковывать свои приложения и зависимости в переносимый контейнер и публиковать их в любом популярномLinuxНа машине тоже можно реализовать виртуализацию. Контейнеры полностью изолированы и не имеют никакого интерфейса друг с другом. Для нас, я думаю, это просто вопрос понимания его какПортативный контейнер приложенийПросто

DockerПреимущества локальной среды разработки

пробный

Разработчикам нужно пробовать всевозможные новые технологии, которые рождаются каждый день, но вряд ли разработчики будут создавать для них среду и тестировать их одну за другой. Время бесценно, и это благодаряDocker, чтобы можно было построить среду в одну или несколько команд, и среда была размером с конкретную версию операционной системы, размером с программное обеспечение. У Docker есть надежный способ получить программное обеспечение,DockerФон автоматически получит образ среды и запустит среду.

Унифицировать среды разработки и производства

Для обычных небольших компаний не так рентабельно строить общую среду разработки. тогда вы можете использоватьDockerунифицировать среду разработки, потому что независимо от того, что вы используетеWindows,Macвсе ещеUbuntu. Если производственная среда также используетсяDockerЕсли это так, вы даже можете напрямую упаковать набор сред, добавить их и запустить, и вам больше не придется беспокоиться о различиях между средой разработки и рабочей средой.

высокая производительность

Степень детализации виртуальной машинывиртуальная машинаDockerСтепень детализацииприложения с ограниченным доступом, для сравнения, Docker занимает меньше памяти, легче и имеет лучшую производительность.

А автозагрузка второго уровня тоже может позволить нам запустить компьютер, а работа среды разработки незаметна.

Дисплей достижений

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

УстановитьDocker

существуетmacПод платформой просто скачайтеdmgустановочный файл. После загрузки дважды щелкните и перетащите.windowsДолжно быть похоже.

просто установитеqqВот так просто, безошибочно.

прикреплятьdockerhubВверхссылка для скачивания

после успехаdocker versionЕсли появляется информация о версии, установка прошла успешно, как показано ниже.

Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:43 2018
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:55:00 2018
  OS/Arch:          linux/amd64
  Experimental:     true

Установитьdocker-composer

Вообще говоря, установка Macdockerпонесет позжеdocker-composer.

Другие платформы, прикрепитьссылка для скачивания

После завершения установки вы можете ввести команду для обнаружения

➜  ~ docker-compose version
docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.1.0h  27 Mar 2018

Если информация о версии отсутствует, вы можете попробовать установить ее снова.

скачатьlaradock

laradockАдрес проекта:https://github.com/laradock/laradockмы находим местоcloneспустись

Я создал новый в своем пользовательском каталогеDockerкаталог, затемcloneвниз по проекту

настроитьenvдокумент

  1. Скопируйте пример в .env

    cp env-example env
    
  2. .envв файлеAPP_CODE_PATH_HOSTэто локальный путьAPP_CODE_PATH_CONTAINERЭто путь удаленного сопоставления, в зависимости от требований, в большинстве случаев он не нужен.

  3. Если вам нужно отладить код, вы также можетеPHP_FPM_INSTALL_XDEBUGиWORKSPACE_INSTALL_XDEBUGоткрыты два варианта

  4. Если у вас есть другие потребности, вы можете.envПоиск внутри, и большинство элементов конфигурации были отделены.

запустить контейнер

ВходитьlaradockНиже рабочий каталогcloneКорневой каталог проекта, мой рабочий каталог~/Docker/laradock.

Затем выполните следующую команду

docker-compose up -d nginx mysql

вы увидите, что автоматическое выполнениеbuildоперации, а после завершения сборки в фоновом режиме автоматически запускаются следующие контейнеры

  • nginx
  • php-fpm
  • workspace
  • mysql

это потому, чтоphp-fpmиworkspaceиdocker-in-dockerдаnginxначали вместе

Так что на самом деле

docker-compose up -d nginx mysql

и

docker-compose up -d nginx workspace php-fpm mysql

Эффект от этих двух команд одинаков, вы можете свести их вместе или не писать.

upКогда команда запускается впервые, она фактическиbuild + startкомбинация , если контейнер не существует, тоbuildКонтейнер и запустить службу, если контейнер существует, то запустить службу напрямую, что, вероятно, и означает-dзначит работает в фоновом режиме

Настроить веб-проект

это яlaravelЧасть конфигурации проекта

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=root
......

Обратите внимание, что хост базы данных должен быть псевдонимом, еслиDB_CONNECTIONВведите 172.0.0.1 здесь илиlocalhostВсе не смогут подключиться.

Это также должно иметь место в других проектах, настроить ссылку на базу данных,redis,илиMemCacheСсылки должны быть установлены на определенные псевдонимы. Или вы можете сказать, что я могу найти ip каждого контейнера, хорошо? Да, но это не рекомендуется, потому что изменится ip.

Конкретные псевдонимы см../docker-compose.ymlнастройки в файле

Основной технической реализацией этого должно быть использованиеdockerТехнология виртуального моста.

Настроить хостhost

Потому что часто при посещении мы отправляем запросы через браузер на хосте, поэтому настраиваем хост на хосте.hostсущественный.

vim /etc/hosts

Я добавлю виртуальное доменное имя, которое я установил здесь

127.0.0.1       blog.test

Затем сохраните и обновите хост.

настроитьnginx

Входить./laradock/nginx/sitesпапка, затемllТеперь мы обнаружим, что laradock помог нам поместить множество перечисленных файлов в

app.conf.example
default.conf
laravel.conf.example
symfony.conf.example

Несложно скопировать копию в соответствии с потребностями, а затем изменить ее.Так как мы являемся проектом блога, разработанным laravel локально, я буду копировать его напрямую.laravel.conf.example, затем используйте vim, чтобы открыть

cp laravel.conf.example blog.conf
vim blog.conf

Содержимое после вскрытия...

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name laravel.test;
    root /var/www/laravel/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

Мы обнаружим, что если нет особых требований, нам не нужно изменять большинство мест в этом. нам просто нужно обратить вниманиеserver_nameиrootЭти два параметра, поместите это внутриlaravelПросто замените его на название нашего проекта, здесь мы заменим его наblog

Ниже измененный контент

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name blog.test;
    root /var/www/blog/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

доступ

входитьurl

http://blog.test/

Браузер возвращает результат

blog项目

enjoy !

Пожалуйста, укажите источникnuggets.capable/post/684490…