Самый простой способ build docker image from github
docker build github.com/Balraj0017/Docker_CI
Если данный вариант не сработал пишите в наш Telegram чат.
Еще один вариант инструкции.
GitHub + DockerHub
В этом мы напишем файл dockerfile, который присутствует на github, и с его помощью создадим образ docker. Образ Docker создается в вашем репозитории Dockerhub. Можно сказать , что мы настраиваем автоматические сборки, аналогично GitOPS.
GitOps — это операционная платформа, рекомендованная различными стандартами соответствия для внедрения инфраструктуры и общих методологий разработки.
Github
Github — это особая система контроля версий с открытым исходным кодом, созданная линусом торвальдсом в 2005 году. Это распределенная система контроля версий, которая означает, что вся история базы кода доступна на компьютере каждого разработчика. Это позволяет легко разветвлять и объединять. Для получения дополнительной информации вы также можете перейти на официальный сайт doc .
Docker
Это программная платформа для создания приложений на основе контейнеров. Docker container может работать где угодно — локально или в облаке. Контейнеры в docker легкие, с большей эффективностью использования ресурсов. Это повышает производительность разработчика, поскольку контейнеры в docker работают быстрее, чем виртуальная машина. Подробнее вы можете узнать на официальном Документация .
Предварительные требования
- Знание как git, так и docker
- Учетная запись на github и dockerhub
- Учетная запись Dockerhub должна быть профессиональной, командной или бизнес -подписки .
Напишите код на github
На первом шаге мы создадим репозиторий с любым именем. Затем напишите код или, можно сказать, напишите dockerfile и разместите его на github.
В это репозиторий нам также нужно добавить файл the index.html и в нем записать любое сообщение, которое мы хотим распечатать как веб-страницу nginx. На этом наша работа с github завершена. Теперь приступайте к работе с dockerhub .
Создайте репозиторий на dockerhub
Сначала мы должны создать репозиторий на dockerhub. После этого мы должны открыть это репозиторий и нажать на раздел сборки, как показано на рисунке.
Для этого у вашей учетной записи должна быть подписка pro, team или business. Когда вы нажимаете на раздел сборки, появляются 2 варианта: ссылка на github и ссылка на bitbucket.
Выберите любой вариант, в котором присутствует ваш файл dockerfile. После подключения к вашему репозиторию git выполните шаг, указанный на изображении ниже.
Я отключил автоматическое тестирование. Если мы включим этот тест, он автоматически внесет изменения в образ, когда вы что-либо нажмете в репозитории github. Нажмите «Сохранить» и «Создать» . Создание образа займет некоторое время. Когда ваша сборка будет успешной, вы увидите, что действие по сборке выполнено успешно (указано ниже).
Теперь мы создадим образ docker на вашем сервере с помощью команд docker
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Вы увидите , что ваше изображение извлечено , а затем запустите контейнер с этим изображением .
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
Теперь узнайте IP-адрес этого контейнера с помощью команды
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
В последнем случае просто выполните curl с этим IP-адресом, и мы получим результат, который мы определили в этом файле. index.html файл в репозитории github. Мы также можем сказать , что это настроило автоматическую сборку в docker .
Ссылки :-
- Для сборки автоматизации вы также можете перейти по ссылке official doc .
- У меня есть этот файл dockerfile на моем компьютере github .
Источник
Дополнительные материалы:
- Build and publish Docker images with GitHub Packages
- How do I use Docker with GitHub Actions
- Публикация Vue.js-приложения в GitHub Packages с помощью GitHub Actions для самых маленьких
Еще один вариант развертки Docker из Git
Запустите Docker, чтобы опробовать его
Ниже приведен работающий пример этого, это простой веб-сервер Node “Hello World”, работающий на порту 3000. Просто запустите эту команду.:
docker run -p 3000:3000 -e github='https://github.com/pmcdowell-okta/dockertest.git' -it oktaadmin/dockertest
Затем подключитесь к http://localhost:3000
. Вы должны увидеть веб-страницу с изображением Hello World.
Как Docker работает с GitHub
Вы запустили образ Docker с переменной окружения, указывающей репозиторий Git, из которого клонируется исходный код. (Переключатель -e
указывает URL репозитория GitHub.) В приведенном мной примере используется репозиторий GitHub, на котором создается веб-сервер, написанный с помощью Node.js. Этот пример очень прост, но вы получите представление о том, как это работает.
Вот схема, на случай, если вам больше подходит визуальное обучение:
Шаги для достижения нирваны в Docker + GitHub
- Запустите Docker Image – Запускает Docker с переменной окружения в репозитории GitHub
- Тянуть Образ Docker автоматически клонирует репозиторий GitHub
- Настройка – Удаляет все зависимости
- Сборки – Создает полный проект
- Выполнить – Запускает проект
Для этого вам понадобятся только Makefile и образ Docker. Давайте узнаем больше о каждом из них.:
Makefile
Это пример Makefile, который я использую, Makefile очень прост, вы, безусловно, можете сделать это по-своему. Makefile удалит все необходимые пакеты или зависимости, затем он клонирует репозиторий GitHub, соберет и запустит приложение.
Вот пример узла, который я использовал:
#Sample from https://github.com/pmcdowell-okta/Simple-node-webserver
setup:
npm install http
build:
echo "nothing to build, this Node, but thank you for thinking of me"
run:
node index.js
dockertest:
make setup
make build
make run
А вот пример в Go:
#Simple Makefile from https://github.com/pmcdowell-okta/hackey-golang-build
GOPATH=$(shell pwd)
SHELL := /bin/bash
PATH := bin:$(PATH)
setup:
@GOPATH=$(GOPATH) go get "github.com/gorilla/mux"
@GOPATH=$(GOPATH) go get "github.com/elazarl/go-bindata-assetfs"
@GOPATH=$(GOPATH) go get github.com/jteeuwen/go-bindata/...
@GOPATH=$(GOPATH) go get github.com/elazarl/go-bindata-assetfs/...
build:
@GOPATH=$(GOPATH) go build ./...
@GOPATH=$(GOPATH) go install ./...
run:
bin/main
#This runs setup, build, and launches the application
dockertest:
make setup
make build
make run
Если вы не знакомы с Makefiles, Makefile — это то, что разработчики используют, чтобы помочь другим разработчикам компилировать и запускать свои проекты. Если вы хотите узнать больше о makefiles, возможно, стоит взглянуть на это руководство по использованию Makefile Руководство по Makefile на Youtube. Просто имейте в виду, что изображение Docker запускает правило под названием dockertest, в котором есть три правила установки, сборки и запуска. Эти правила будут выполняться по порядку.
Makefile (ы) чувствительны и требуют табуляции, поэтому, если ваш Makefile не работает, просто дважды проверьте и убедитесь, что вы не используете пробелы. Makefile также используют специальный синтаксис, называемый YAML.
Вы также можете протестировать свой код и выполнить сборку локально, прежде чем передавать его на GitHub, выполнив:
make dockertest
Если это работает в вашей среде, и вы добавили все зависимости в Makefile, это должно работать и для образа Docker.
Добавьте файл Dockerfile
Для файла Dockerfile я стараюсь сделать его как можно более компактным. Обычно я начинаю с базового образа Ubuntu. Я добавляю необходимые языки, такие как Go или Node.
Особый соус — это несколько команд, которые я помещаю в Dockerfile, который запускает Makefile из репозитория GitHub. Вот как выглядит один из моих Dockerfile.:
FROM ubuntu
#You can start with any base Docker Image that works for you
RUN echo "#!/bin/bash\n" > /startscript.sh
RUN echo "mkdir github\n" >> /startscript.sh
RUN echo "cd github\n" >> /startscript.sh
RUN echo "git clone \$github\n" >> /startscript.sh
RUN echo "cd *\n" >> /startscript.sh
RUN echo "make dockertest\n" >> /startscript.sh
RUN chmod +x /startscript.sh
CMD /startscript.sh
Если вы новичок в Docker и хотите создать свой собственный образ, вы можете скопировать мой код сверху и сохранить его в файл с именем Dockerfile, затем вы можете запустить приведенную ниже команду, которая создаст вашу собственную локальную версию моего образа Docker под названием dockertest.
docker build -t dockertest .
В этом руководстве я буду использовать свое изображение, но если вы уже опытный пользователь Docker, смело используйте свое собственное. Просто помните, что вам нужно добавить в свой образ Docker все, что требуется для компиляции и разрешения зависимостей.
Добавьте переменную окружения в Docker
Особенностью этого простого решения является передача переменной окружения в интерфейс командной строки Docker, которая предоставляет URL-адрес, по которому образ Docker будет удален из репозитория GitHub. Я решил вызвать переменную окружения github
.
Для этого примера мне также нужно было разрешить порт 3000 для доступа к гостевому образу Docker:
Супер простое тестирование GitHub с помощью Docker – почему?
Что мне действительно нравится в этом подходе, так это то, что кому-то легко попробовать ваш код. Ниже приведен скриншот из одного из моих репозиториев GitHub, где я включаю команду для тестирования моего кода непосредственно из описания в файле readme.md
.
Мне понравилось документировать этот метод, надеюсь, другие найдут его полезным!