ps: Я впервые пишу статью в Наггетс, и надеюсь, вы проявите милосердие (прошу не обращать внимания на верстку).
Представление себя: я, мужчина, 1992, Сучжоу,женат (хахаха), фронтенд в бизнесе более 3-х лет.Хорошо, бери~
Верно, я Четузай, и обычно мне просто нравится ходить вверх и вниз. Докер возил меня туда-сюда 10 дней, и я потерял бессчетное количество волосков.Я консультировался с большими ребятами.Процесс был сложным,поэтому я решил поделиться этой статьей.Технология ближе к повседневной эксплуатации и обслуживанию (ремонту компьютеров). Но кто сделал наш передок внизу, тут ничего не остается, кроме как вырезать карту, сделай это!
предисловие
Большая часть развертывания проектов компании может иметь очень мало практических интерфейсов, и теперь многие из них развертываются автоматически с помощью jenkins. Так что передок стал в глазах окружающих обрезанной фигурой. Эта статья проведет вас по двум венам Рена и Ду и совершит путешествие в мир развертывания докеров. (А, проснись, тест говорит тебе вернуться и исправить ошибки).
Проще говоря, внешний дистрибутив vue загружается непосредственно на сервер (в этой статье применяется nginx), внутренний узел (в этой статье применяется экспресс) создает интерфейс и запускает службу, а nginx настраивает интерфейс для вперед. Конечно, должна быть запущена и база данных mysql (я тоже сутками наблюдал за mysql, но был беспомощен).Простая реализация интерфейса ввода контента, настройки интерфейса и хранения базы данных. Поскольку я беден и не могу позволить себе сервер, я использую vmvare+ubuntu, чтобы поиграть.
vmvare:https://www.vmware.com/cn/products/workstation-player/workstation-player-evaluation.html
18.04LTS desktop ubuntu:https://ubuntu.com/#download
Общая технология: докер, vue, экспресс + секвенирование, mysql
Введение в окружающую среду
Docker — это контейнерный движок приложений с открытым исходным кодом, который позволяет разработчикам упаковывать свои приложения и зависимости в легковесный переносимый контейнер.контейнер, который затем можно распространить на любую популярную Linux-машину, которую также можно виртуализировать. Контейнеры полностью изолированы и не имеют никакого интерфейса друг с другом. (Проще,Например, если вы идете в торговый центр, в торговом центре есть много специализированных магазинов, закусочных и косметических магазинов.Эти магазины похожи на контейнеры.Вы можете пойти в любой магазин в соответствии с вашими потребностями, и эти магазины не вмешиваться в дела друг друга по существу.)
Не буду знакомить с vue, хочется вырвать все это херня написанная.
Что касается ноды, то сейчас это постоянный навык для многих средних и продвинутых фронтендов, ведь на изучение Java и PHP, лучшего языка в мире, не так много сил. Проще говоряJavaScript работает на сервере, основанный на двигателе V8, очень быстрый и очень хороший. Внешний интерфейс обычно использует свою серверную структуру express/koa. Я помню, как vue-cli использовал экспресс-сервис.
Docker
В первую очередь обязательно установите докер в убунту (официальный сайт самодельщика)
зеркало
Официальный сайт зеркального склада:hub.docker.com/
Образ — это предпосылка Docker для запуска контейнера, хранилище — это место для хранения образа, а видимый образ — ядро Docker. В простом понимании образы Docker можно рассматривать как специальную файловую систему, предоставляющую контейнеры.Время выполненияНеобходимые программы, библиотеки, ресурсы, файлы конфигурации и т.д. (Рабочая среда).
Для облегчения понимания запустим mysql.
Докер поиск mysql: поиск mysql на складе в зеркале
На данный момент вы можете видеть, что версия mysql является официальной, вы можете с уверенностью загрузить ее, а затем docker pull mysql:latest, чтобы получить последнюю версию образа. Разумеется, я скачал здесь версию 5.6. После того, как docker pull mysql: 5.6 прошел успешно, используйте образы docker для просмотра всех установленных образов, и вы увидите, что образ mysql: 5.6 был установлен нормально.
контейнер
контейнерзеркало на основеПрограммный модуль, который работает. Он упаковывает код и все его зависимости, чтобы приложения могли надежно и быстро работать из одной вычислительной среды в другую. легкий независимыйисполняемыйупаковка. Контейнеры изолируют программное обеспечение от его среды и обеспечивают его единообразную работу. Несколько контейнеров могут работать на одной машине.
Запустите контейнер с образом mysql:
docker run -itd --name mysql-1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
以5.6版本的mysql运行一个名为mysql-1内部端口3306映射到主机3307且密码为123456的容器
-it:一般同时出现
i:交互式操作
t:终端
--name:命名容器名
-p:容器内部端口映射到主机端口
docker ps -a:查询所有状态的容器(包括停止)
docker ps: Запрос запущенных контейнеров
На этом этапе мы можем использовать клиент mysql для подключения, чтобы увидеть:
Конечно, вы должны сначала посмотреть на свой linux ip: вы можете видеть, что в это время ip 10.0.0.178 (метод сетевого подключения vm использует мост).
На этом этапе клиент mysql настраивает тест соединения:
ок, значит, ты недалек от успеха
Vue
Это наш интерфейс, страница очень простая, интерфейс создан.
Адрес проекта на гитхабе:GitHub.com/Внешний вид имеет значение…
Затем упакуйте npm run build, чтобы сгенерировать dist. Как упоминалось ранее, ресурсы интерфейса должны быть размещены на сервере nginx.
Итак, продолжим:
репозиторий docker search nginx — последняя официальная версия
docker pull nginx: последняя установка
Образы Docker, чтобы увидеть, успешно ли установлен образ nginx.
Затем мы запускаем контейнер nginx, чтобы увидеть, может ли браузер нормально обращаться к службе nginx:
docker run --name nginx-test -p 8080:80 -d nginx
После запуска убедитесь, что 10.0.0.178:8080 может получить доступ к инструкциям.
На этом этапе мы можем войти в этот контейнер, чтобы увидеть некоторые конфигурации и операции.
docker exec -it 容器id bash:进入容器(推荐exec,容器退出,不会导致容器的停止)
docker ps для просмотра контейнераnginx-test
docker exec -it 9900fc8bb5c9 bash 进入容器
На этом этапе мы можем увидеть конфигурацию nginx /usr/share/nginx/html/index.html, затем мы можем поместить в нее front-end dist напрямую, но в это время мы будем использовать Dockerfile для настройки образа.
Что такое Dockerfile?
Dockerfile — это текстовый файл, используемый для сборки образа.Текст содержит инструкции и инструкции по сборке образа.
На этом этапе вы можете создать папку Dockerfile в vmvare и коснуться файла Dockerfile. Команда выглядит следующим образом:
Затем создайте веб-папку в /Dockerfile/, создайте переднюю папку в /Dockerfile/web/ и перетащите внешний дистрибутив в /Dockerfile/web/front/. Вы можете обратиться к следующему, чтобы убедиться, что каталог файлов правильный
Хорошо, давайте запустим Dockerfile, перейдите в каталог /Dockerfile/ и отредактируйте файл vim Dockerfile.
FROM: все настраиваемые образы основаны на образах FROM, а nginx здесь является базовым образом, необходимым для настройки. Последующие операции основаны на nginx.
COPY: Скопировать инструкцию изконтекстный каталогСкопируйте файл или каталог по указанному пути в контейнере.
Ранее мы видели, что каталог статических файлов в контейнере nginx — /usr/share/nginx/html/, поэтому dist можно скопировать сюда.
Начать создание образа
docker build -t web-front:latest . //一定注意末尾加上 .
После сборки образы докеров могут видеть web-front:latest image
запустить контейнер
docker run -itd --name web-front-1 -p 2222:80 web-front:latest bash
docker ps Просмотр контейнера web-front-1
в контейнер
docker exec -it f6d33f03653f bash
/usr/sbin/nginx открыть службу nginx
доступ10.0.0.178:2222
хорошо, достаточно широкий, чтобы получить доступ к внешнему сервису, вы в основном близки к успеху.
Node
Готов сделать интерфейс. экспресс + продолжение (форма)
Адрес проекта на гитхабе:GitHub.com/Внешний вид имеет значение…
Вставьте некоторый основной код
Подключиться к базе данных:
Моделирование:
интерфейс:
server.js:
После того, как узел node server.js может запустить службу
Подготовка к развертыванию узла
Создайте папку узла в /Dockerfile/web/, а затем поместите файл проекта узла в /Dockerfile/web/node/. Конечно, вам также необходимо создать файл Dockerfile в /Dockerfile/web/node/, чтобы создать собственный образ. узла (еще не используя docker compose).
Изменить Dockerfile
Начать создание образа
docker build -t web-node:beta . // Обязательно добавьте . в конце
бета на самом деле является тегом веб-узла
запустить контейнер
docker run -itd --name web-node-beta -p 5555:3000 web-node:beta bash
docker ps Просмотр контейнера web-node-beta
На этом этапе почтальон может использоваться для запуска интерфейса.
ps: вы должны предварительно создать таблицу u_users в базе данных (sequelize автоматически найдет эту таблицу при моделировании, не используя синхронизацию для принудительного создания таблицы)
Ух ты! Очень рад, что есть древесина. Теперь можно получить доступ к внешнему и внутреннему интерфейсу. А как насчет междоменных внешних интерфейсов? Ничего страшного, вы еще про контейнер web-front-1 помните, да, именно так, просто модифицируйте конфигурацию в nginx в контейнере. Давай, сделаем:
docker exec -it f6d33f03653f bash входит в контейнер web-front-1, а затем мы обнаруживаем, что каталог файла конфигурации conf: /etc/nginx/conf.d/default.conf, тогда мы можем редактировать конфигурацию напрямую
Сохраните и выйдите, на этом этапе нам нужно перезапустить nginx. Вы можете перезагрузить nginx -s или остановить nginx -s, а затем /usr/sbin/nginx. Затем мы можем смоделировать содержимое ввода внешнего интерфейса, настроить интерфейс и сохранить процесс базы данных.
интерфейсный вход
интерфейс
запрос выполнен
База данных нашла эти данные
Хорошо, большое спасибо за просмотр. Я изучал докер 10 дней и написал эту вводную статью.Много не написанных инструкций, а некоторые шаги пропущены.Некоторые вещи приходится изучать самому.Конечно,ошибки в статье неизбежны. мой мальчик Чету!