-Поиск по дневнику

Поиск сообщений в rss_rss_hh_new

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.03.2011
Записей:
Комментариев:
Написано: 51


Настройка Dockerfile для создания и запуска контейнера Docker с вашей программой на Go

Четверг, 29 Июня 2017 г. 13:07 + в цитатник
Вы написали программу (микросервис) на Go, и хотите развернуть ее в контейнере Docker?
В этой небольшой заметке я постараюсь максимально компактно и практично описать этот процесс для новичков, учитывая современный уровень развития docker. В интернете нашел много статей с непонятными или устаревшими инструкциями, и мало практики, поэтому, решил написать свою.

Про Docker в двух словах скажу так — он позволяет запустить контейнер с виртуальной операционной системой и вашим приложением, размещенным в ней. А так же, когда надоест, удалить напрочь этот контейнер, не заботясь о том, что Ваше приложение где-то тайком намусорило в системе.
Вот, собственно, и все преимущества от использования контейнеров docker для новичков :)

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


Еще пару слов о том, с чем docker работает. Он хранит у себя образы (image) контейнеров, на основе которых Вы можете наклепать сколько угодно экземпляров самих этих контейнеров и настроить им маршрутизацию по сети (мэппинг входящих портов и т.п). Образы собираются на основе других образов (можно сказать, есть наследование образов), которые есть в публичном доступе в репозитории docker. Для программы на Go лучшим готовым выбором будут образы golang:latest (на базе debian) и golang:alpine (на базе alpine linux). Другие названия образов можно посмотреть тут: hub.docker.com/_/golang

Чтобы собрать образ (image), нужно в папке исходников своей программы сделать текстовый файл Dockerfile, без расширения, с таким содержимым:
#имя базового образа
FROM golang:latest

#создаем папку, где будет наша программа
RUN mkdir -p /go/src/app

#идем в папку
WORKDIR /go/src/app

#копируем все файлы из текущего пути к файлу Docker на вашей системе в нашу новую папку образа
COPY . /go/src/app

#скачиваем зависимые пакеты через скрипт, любезно разработанный командой docker
RUN go-wrapper download

#инсталлируем все пакеты и вашу программу
RUN go-wrapper install

#запускаем вашу программу через тот же скрипт, чтобы не зависеть от ее скомпилированного имени
#-web - это параметр, передаваемый вашей программе при запуске, таких параметров может быть сколько угодно
CMD ["go-wrapper", "run", "-web"]

#пробрасываем порт вашей программы наружу образа
EXPOSE 8000

В папке с этим файлом и вашими исходниками запускаем команду:
docker build -t my-golang-app .

Точка в конце — это текущая директория с файлом Docker, не забываем ее указывать.
my-golang-app — это будет название образа, в котором скомпилируется ваша программа.
После выполнения этой команды можно посмотреть наличие успешно собранного образа командой
docker ps -a

Создать и запустить контейнер на базе собранного образа можно так:
docker run -it --rm --name my-running-app my-golang-app

my-running-app — это будет имя создаваемого контейнера на основе образа my-golang-app.

Подробнее по ключам запуска docker и составу файла Dockerfile смотрите тут: docs.docker.com
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/331938/

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку