TLDR;
Создание наших приложений и поворачивая их в Docker Images является одним из лучших способов развертывания приложения. Мы можем убедиться, что среда одинакова на любой машине, которую она развернута, и мы можем использовать Kubernetes или Docker, чтобы управлять развертыванием и убедиться, что он всегда работает. Существует тонна изображений, которые вы можете использовать для создания вашего приложения, но ваша ситуация может понадобиться конкретное изображение, которое не доступно, или продлить изображение, которое сделал кого-то другого. Эта статья поможет вам настроить рабочий процесс с действиями GitHub, который будет создавать и пометить изображение Docker и толкает его в реестр Docker Hub.
Создание репо
Давайте начнем с создания нового REPO GitHUB, который удержит наш код (в нашем случае, действительно нужен только докеренный файл) для создания изображения. Создайте REPO в GitHub и назовите его все, что вы хотите. Добавьте один файл в корне репо, называется Dockerfile
Отказ Если вы следуете наряду со мной, вы будете строить изображение, которое запечено на него угловой CLI. Если вам нужно другое изображение, то измените следующее, чтобы соответствовать вашим потребностям. Содержание Dockerfile
должно быть:
# ./Dockerfile FROM node:12-alpine as node-angular-cli LABEL authors="Preston Lamb" # Linux setup # I got this from another, deprecated Angular CLI image. # I trust that developer, so I continued to use this, but you # can leave it out if you want. RUN apk update \ && apk add --update alpine-sdk \ && apk del alpine-sdk \ && rm -rf /tmp/* /var/cache/apk/* *.tar.gz ~/.npm \ && npm cache verify \ && sed -i -e "s/bin\/ash/bin\/sh/" /etc/passwd # Angular CLI RUN npm install -g @angular/cli@8
На вершине Dockerfile
Мы объявляем изображение, которое мы будем использовать в качестве основы для этого изображения. В этом случае мы используем изображение альпийского узла в версии 12. Мы устанавливаем Авторы
Этикетка, в этом случае я положил свое имя, а затем запустите команду обновления. Я оставил это здесь после использования другого репо для вдохновения. Я доверял, что разработчик знал, что он делал, поэтому я оставил его. Но вы можете вывести его, если хотите. Последнее, угловая CLI устанавливается во всем мире для изображения. Это довольно простое, простое изображение, так что это все, что нам нужно. Ваше изображение может потребоваться больше шагов, чем это, поэтому убедитесь, что поместите все здесь в этот файл.
После завершения этого (и добавление дополнительного README) мы нажимаем код на наш REPO GitHUB.
Создание действия GitHub
Теперь мы готовы настроить действие GitHub, которое будет строить, тег и нажать на изображение в Docker Hub для нас. В этом случае я только хотел, чтобы новый образ был построен, если релиз был помечен. Это позволило бы мне работать в репо и подтолкнуть к нему без дополнительных сборки. Тег также может быть использован в качестве тега для изображения в Docker Hub, который позволит нам установить его и забыть. Нам не нужно беспокоиться об обновлении имени метки в действии GitHub каждый раз, когда вы хотите создать новое изображение.
Итак, чтобы начать работу с вашим GitHub Action, нажмите на вкладку «Действия» на странице вашего репо в GitHub:
Теперь вы должны увидеть посадочную страницу, которая выглядит похоже на это:
Ваш может быть немного другой; Похоже, что GitHub пытается проанализировать REPO и угадать, какие рабочие процессы и действия вы можете захотеть. Но в целом он будет приветственное сообщение с некоторыми предложенными действиями. Топ-один в этом примере, для меня, было предложению для построения докера. Это то, что мне нужно, поэтому я нажал на этом. Делая это, потребовалось меня на новую страницу, где она создала папку для рабочих процессов и создала сам файл рабочего процесса. Теперь вы можете редактировать файл здесь в GitHub или зафиксировать его в ветку и вытянуть его на свою машину. В любом случае, добавьте следующее в файл:
# ./.github/workflows/dockerimage.yml name: Docker Image CI on: release: types: [published] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Login to DockerHub Registry run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin - name: Get the version id: vars run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10}) - name: Build the tagged Docker image run: docker build . --file Dockerfile --tag pjlamb12/angular-cli:$ - name: Push the tagged Docker image run: docker push pjlamb12/angular-cli:$ - name: Build the latest Docker image run: docker build . --file Dockerfile --tag pjlamb12/angular-cli:latest - name: Push the latest Docker image run: docker push pjlamb12/angular-cli:latest
Давайте немного сломаем этот файл. Начнем с вершины с именем для рабочего процесса. Предварительно выбранное действие автоматически добавляет имя, но вы можете изменить его, если хотите. Далее, где мы определяем, когда этот рабочий процесс будет работать:
# ./.github/workflows/dockerimage.yml on: release: types: [published]
Это говорит GitHub, чтобы запустить этот рабочий процесс, когда опубликован новый релиз. Опять же, это было решение, которое я сделал, потому что я хотел иметь возможность пометить релиз с желаемой версией изображения и иметь изображение, построенное и нажатое.
Следующий раздел — это Работа
Раздел, где мы создадим фактическую работу рабочего процесса. Мы поставим работу, которая будет работать в построить
Шаг, и скажите ему, чтобы использовать новейший образ Ubuntu для действия для работы. Затем мы определяем Шаги
:
# ./.github/workflows/dockerimage.yml steps: - uses: actions/checkout@v1
Первый шаг сообщает действия, чтобы продлить еще одно действие, которое уже создано; В этом случае A Оформить заказ
Действие, которое проведет наш код для использования для сборки. Следующий:
# ./.github/workflows/dockerimage.yml - name: Login to DockerHub Registry run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
Этот шаг входит в систему в реестре Docker Hub. Мы выводим пароль, а затем труба, в которую в Докер Логин
команда. Здесь есть что-то новое, хотя и это секреты
что мы используем. GitHub имеет раздел в настройках для каждого репозитория, где вы можете настроить секреты, которые будут использоваться для таких вещей, как действия GitHub. Это здорово, потому что в противном случае не было бы способов войти в третьительные услуги, такие как Docker Hub, не вкладывая свой пароль или ключ доступа к репо, видно для всех, чтобы увидеть. Чтобы найти секреты, нажмите «Настройки» в верхней части репо, затем секреты в списке «Левый нави», а затем добавьте необходимые вами секреты, в этом случае наше имя пользователя и пароль для Docker Hub:
Как только вы добавили там секреты, они будут использоваться, когда ваш рабочий процесс просит их, как мы сделали выше.
После входа в Docker Hub нам нужно получить имя версии для этого изображения, и мы делаем это, принимая имя тега или выпуска:
# ./.github/workflows/dockerimage.yml - name: Get the version id: vars run: echo ::set-output name=tag::$(echo ${GITHUB_REF:10})
На этом шаге мы используем :: Набор-вывод
Команда для создания переменной, Тег
и установите его значение для строки. Эта строка берет Github_ref
и начинается с 11-го характера и идет до конца. Причина, по которой мы начинаем с 11-й переменной, заключается в том, что в нашем случае Github_ref
будет Refs/Tags/Tag имя
Отказ Начиная с 11-го символа пропускает Refs/Tags/
и просто использовать название тэга
. Мы будем использовать это Тег
переменная всего за минуту.
Следующим шагом является создание, тег и нажимайте изображение с нашими недавно созданными Тег
Переменная. Кроме того, мы строим и помечаем изображение как Последние
и протолкнуть это в репо, а также:
# ./.github/workflows/dockerimage.yml - name: Build the tagged Docker image run: docker build . --file Dockerfile --tag pjlamb12/angular-cli:$ - name: Push the tagged Docker image run: docker push pjlamb12/angular-cli:$ - name: Build the latest Docker image run: docker build . --file Dockerfile --tag pjlamb12/angular-cli:latest - name: Push the latest Docker image run: docker push pjlamb12/angular-cli:latest
Эта часть довольно проста. Я просто укажу, что мы доступ к нашему Тег
Переменная с STAPES.Vars.Outputs
Синтаксис увиден выше. Последняя часть — это имя нашей переменной. В этом случае то есть Тег
Отказ Мы также могли бы также оптимизировать это, создавая изображение один раз, помечая его с нашей переменной, толкая его, а затем оплотить и нажав одинаковое изображение, но это нормально; Это делает работу.
Вот и все сейчас! Это все, что мы должны сделать, чтобы настроить наш рабочий процесс! Не так уж плохо, а? В следующем разделе мы будем течь выпуск, отпуская для нас сборка.
Тегирование и выпуск
Этот последний шаг — метка релиза в нашем репо GitHub. Это забивает сборку для нашего рабочего процесса. Для этого нажмите на раздел выпуска вашего репо, который находится под вкладкой кода:
Нажмите на кнопку «Вершина нового выпуска». GitHub проведет вас через шаги создания релиза, но вы должны выбрать имя тега и желаемое для выпуска. Вы также можете добавить заголовок и описание. Помните две вещи: имя тега, которое вы используете здесь, будут использоваться в качестве имени тега для вашего изображения Docker, и как только вы нажмете кнопку «Опубликовать», рабочий процесс будет запущен. Как только вы будете готовы, опубликовать выпуск!
Просмотр выходного процесса
Чтобы просмотреть, что произошло в вашем рабочем процессе, и отладка, если это необходимо, вернитесь на вкладку «Действия» в вашем репо. Как только вы создали действие, эта страница будет выглядеть так:
Слева вы можете увидеть все рабочие процессы, которые у вас есть. Вы можете просматривать их все или определенный рабочий процесс. Вы также можете увидеть таблицу сборки, как успешных, так и не удаленных, и смогу нажать на один из этих сборки, чтобы увидеть детали. Если ваша сборка не работает, вы можете отладить его здесь и сделать необходимые изменения, чтобы получить вашу сборку.
В дополнение к выходу вашего рабочего процесса на вкладке «Действия» не забудьте пойти в Docker Hub и просматривать их изображение!
Заключение
Действия GitHub являются мощными и позволяют иметь рабочий процесс CI/CD для вашего приложения или все, что вы можете создавать. Вы можете запустить его на любые действия репо, которые вы хотите. Может быть, когда создан PR, вы хотите пройти тесты. Или, может быть, вы хотите, чтобы ваше приложение было построено и развернуто на сервере. Независимо от вашего конечного результата, вы можете использовать действия GitHub для достижения этого. Надеюсь, этот пошаговый обзор поможет вам создать ваше первое действие!
Оригинал: «https://dev.to/prestonjlamb/creating-a-docker-image-with-github-actions-1hb8»