Рубрики
Uncategorized

Автоматизированное построение и Непрерывная интеграция и развертывание Предоставление Практического Инженерного источника На основе Docker, Gogs, Дженкинса и Кубернетеса

Автор оригинала: David Wong.

Цели для этой проблемы: На основе entos 7.6 инкапсулируйте готовое зеркало, которое можно использовать для запуска PHP-проектов В этой статье не обсуждается грамматика файлов dockerfile, и предполагается, что вы знаете базовые знания операционной системы Unix и имеете операционную среду, подобную Unix (включая, но не ограничиваясь, физическую машину, подобную Mac или Linux, виртуальную машину, подобную Unix, компьютер Windows MinGW или CygWin), и что вы понимаете основные операции docker и обладаете определенной степенью способности к чтению документов.

Мертвая работа

Создание рабочего каталога

mkdir ~/docker-learn
cd ~/docker-learn

Создать файл настройки

touch Dockerfile

Затем скопируйте ваш обычный файл nginx.conf в рабочий каталог

cp xxx/nginx.conf nginx.conf

Упаковочное Базовое Зеркало

Отредактируйте файл настройки мы создали

Основное содержание

Объявите, что это изображение наследуется от последней версии CentOS

FROM centos

Установить nginx

  • Создать исходный файл nginx

    Поскольку в репозитории CentOS нет nginx, нам необходимо самостоятельно обновить источник добавления nginx в docker. Скопируйте содержимое источника RHEL в nginx.org в файл nginx.repo

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

  • Напишите дубликат nginx. инструкция по репо в образ docker

  • Установите nginx с помощью Yum и установите его для загрузки

Установите PHP

Исходный код CentOS по умолчанию имеет низкую версию PHP и связанных с ним пакетов, нам нужно заменить версию какого-то нового источника. Эта статья Реми зеркало с открытым исходным кодом

  • Установите исходный код Remi

  • Используйте Yum для установки PHP и связанных с ним пакетов и установки их для загрузки

Уборка

Как мы все знаем, если вы хотите разместить его в Интернете, чем меньше зеркало, тем лучше. Docker Yum будет генерировать много кэшей, поэтому необходимо выполнить некоторые работы по очистке.

RUN yum clean headers && 
    yum clean packages && 
    yum clean metadata && 
    rm -rf /usr/share/man

Объявить точки входа зеркальной среды выполнения

То есть первая команда, выполняемая средой выполнения контейнера, если ее в ней нет, вполне вероятно, что некоторые привилегированные команды, такие как chkconfig, не будут выполняться.

ENTRYPOINT ["/sbin/init"]

Объединить файл настройки

Каждая инструкция в файле dockerfile генерирует один слой зеркал, который увеличит размер наших зеркал. Обычный способ-объединить как можно больше инструкций в один заказ, что может эффективно уменьшить размер зеркального изображения.

FROM centos

# Duplicate two repos
COPY conf/tsinghua-base.repo /etc/yum.repos.d/CentOS-Base.repo
COPY conf/nginx.repo /etc/yum.repos.d/nginx.repo

# Installation components and related packages
RUN yum makecache &&      
    yum -y install nginx && 
    chkconfig nginx on && 
    yum install -y epel-release && 
    rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && 
    yum update -y && 
    yum install -y --enablerepo=remi --enablerepo=remi-php72 
    php 
    php-openssl 
    php-curl 
    php-bcmath 
    php-devel 
    php-mbstring 
    php-mcrypt 
    php-mysqlnd 
    php-pdo 
    php-gd 
    php-xml 
    php-opcache 
    php-fpm && 
    chkconfig php-fpm on && 
    yum clean headers && 
    yum clean packages && 
    yum clean metadata && 
    rm -rf /usr/share/man

# Declare entry points
ENTRYPOINT ["/sbin/init"]

Проверка доступности изображений

  • Строительные Зеркала

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

  • Контейнер с правами доступа для запуска фонового запуска вернет идентификатор

    При использовании параметра — privileged контейнер будет иметь реальные привилегии суперпользователя, в противном случае у него будут только локальные привилегии общего пользователя. Эта опция требуется только в том случае, если в контейнере выполняются определенные специальные операции (например, systemctl).

  • Проверьте состояние работы зеркала

    Если возвращаемый результат похож на этот, то наша операция верна.

  • Если для запуска изображения используется сопоставление портов, вы даже можете увидеть страницу приветствия nginx по умолчанию в своем локальном браузере

Нажмите Зеркало на контейнерную службу Aliyun

  • Зарегистрировать пространство имен Aliyun

Войдите в зеркальную консоль Aliyun. Войдите в зеркальную консоль Aliyun.

Интерфейс выглядит примерно так.

  • Использование Зеркального Ускорителя

Нажмите на зеркальный ускоритель в левом нижнем углу на https://cr.console.aliyun.com/cn-zhangjiakou/instances/mirrors и вы увидите свою собственную ссылку на ускорение.

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

  • Войдите на склад Aliyun docker
Sudo docker login -- username = your Ali Cloud username registry. CN - zhangjiakou. aliyuncs. com
Password: Your Aliyun password
Login Succeeded
  • Создайте пространство имен

Щелкните пространство имен слева, нажмите Создать пространство имен и введите свое имя пространства имен

Пространства имен можно понимать как организацию, к которой принадлежит зеркало, например, полное имя CentOS image docker.io/centos, докер.io-это пространство имен изображения CentOS, но в docker существует несколько типов изображений CentOS.пространство имен ввода-вывода.

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

  • Создание складов

Только что мы создали пространство имен, поэтому следующим шагом будет создание хранилища.

Репозиторий можно понимать как имя пакета, созданного организацией, например: полное имя образа CentOS docker.io/centos, CentOS является хранилищем docker.io (программное обеспечение), а программное обеспечение CentOS может иметь множество версий.

Перейти к https://cr.console.aliyun.com/cn-zhangjiakou/instances/repositories страница склада и нажмите на новый склад.

Только что был создан выбор пространства имен, и краткое описание является зеркальным введением.

Нажмите кнопку Далее, чтобы выбрать локальное хранилище для источника

После нажатия кнопки Создать зеркальное хранилище вы найдете на странице дополнительную строку данных, указывающую на то, что создание прошло успешно.

Наведите курсор мыши на тот же значок, что и при загрузке, чтобы увидеть эксклюзивный адрес склада

  • Измените имя зеркала

Мы собираемся поместить зеркало, которое мы только что построили, под названием first-build, на склад Aliyun. Во-первых, мы им воспользуемся. изображения докера | первая сборка grep Найдите его идентификатор зеркала. Затем мы изменим имя зеркала, чтобы оно соответствовало формату имени зеркала стороннего репозитория docker.

Сторонний Зеркальный Склад Формат Зеркального имени: Адрес склада/Организация/Название Зеркала: Номер Зеркальной Версии

Возьмем в качестве примера Aliyun: адрес склада Aliyun/пространство имен/название склада: версия реестра.cn-чжанцзякоу.aliyuncs.com/leasn-docker/learn-docker:1

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

docker tag 3482e8529a90 registry.cn-zhangjiakou.aliyuncs.com/leasn-docker/learn-docker:1

Повторное использование образы докеров | первая сборка grep Я не могу его найти, потому что его название изменилось.

  • Нажимное зеркало
sudo docker push registry.cn-zhangjiakou.aliyuncs.com/leasn-docker/learn-docker

Когда все силы иссякнут, мы найдем дополнительную версию на складе Aliyun.

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

Приветствую Алиюна за его самоотверженную преданность делу с открытым исходным кодом

Зеркало Работающего проекта Упаковки

Теперь мы собираемся изучить, как позволить зеркалу управлять нашим собственным проектом.

  • На этот раз мы можем нажать на зеркальное отражение Алиюна.

  • Скопируйте наш подготовленный файл nginx.conf в зеркало

    Полный текст nginx.conf

  • Скопируйте исходный код разработки в зеркало

    Создайте свой проект в текущем каталоге и сделайте вид, что в нашем проекте есть только один файл, который находится внутри./проект

    Скопируйте наш проект в зеркало и взвесьте запущенный каталог

    Полный текст файла Dockerfile

    Создайте зеркало и используйте сопоставление портов для запуска нашего контейнера

    Если ничего неожиданного не произойдет, мы уже можем увидеть phpinfo () в 127.0.0.1:8080 локально.

    Теперь, когда phpinfo увидел это, я не буду останавливаться на том, как запустить весь проект.

Стоит отметить, что новые версии подталкиваются к

Использование docker-compose для организации изображений

Compose-это инструмент для определения и запуска многоконтейнерных приложений Docker. Используя Compose, вы можете настроить службы вашего приложения с помощью файлов YAML. Затем с помощью одной команды вы можете создать и запустить все службы из конфигурации

Приложение использует sudo apt установить докер-составить установить

  • Настройка структуры каталогов

    Добавьте слой каталога за пределами нашего текущего рабочего каталога примерно следующим образом: Рабочий каталог > docker-learn (предыдущий рабочий каталог) и docker-compose.yaml

    Древовидная структура каталога:

  • Редактировать Редактировать

Docker-compose содержит множество инструкций и написан на языке yaml. Можно понять, что параметры команд запуска, выполняемых в командной строке, записываются в файл и запускаются согласованно единым инструментом.

Main Directives:

Информация о версии версии, я не знаю, почему это должно быть 3

version: 3

Службы должны составить список услуг. На этот раз мы в основном пишем сервис под названием docker-learns.

services: 
  • Полный текст docker-compose.yml
version: '3'
    services:
        # Service name
        docker-learn:
            # Does the service start with privileges -- privileged
            privileged: true
            # Construction
            build:
                # Construction上下文 即: docker build ./docker-learn
                context: ./docker-learn 
            # Port mapping, i.e. -p 80:80
            ports:
                - 80:80
            # Exposed ports, equivalent to Dockerfile EXPOSE instructions 
            # The EXPOSE instruction only states the port that the container should open, but it does not actually open it!
            # This option really works when docker run-it-P (capitalized)
            expose:
                - 80
            # Directory mapping, equivalent to docker run-v 
            # volumes:
            #    - ./logs/php-fpm:/var/log/php-fpm
            #     - ./logs/nginx:/var/log/nginx
  • Запустите изображение с помощью docker-создать

    Закройте другие запущенные контейнеры, чтобы избежать конфликтов с контейнерами, которые мы собираемся запустить

    Начальное Зеркало

    Отдельный запуск запускает все контейнеры, определенные в службах, без использования имени службы. Если в службах несколько служб, вы можете использовать имя службы up для отдельного обновления контейнера службы По умолчанию up запустит контейнер с скомпилированным изображением файла Dockerfile в контексте сборки: – – сборка вынуждена повторно скомпилировать изображение с помощью файла Dockerfile для перезапуска. Однако при сборке все равно будет использоваться кэш существующего слоя изображения. Принудительное воссоздание полностью перекомпилирует без использования зеркального слоя кэширование

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

    Мы обнаружили, что мы все еще можем видеть phpinfo в 127.0.0.1:8080

Доступ к Дженкинсу для непрерывной интеграции

Обновление

Доступ к kubernetes

Обновление

Оригинал: “https://developpaper.com/automated-construction-and-continuous-integration-and-deployment-delivery-of-practical-engineering-source-based-on-docker-gogs-jenkins-and-kubernetes/”