Найти тему
ГоГофер

Quick start docker+golang

Docker - это платформа для контейнеризации приложений, которая позволяет упаковать приложение и его зависимости в единый контейнер, который можно запустить на любой платформе. Контейнеризация приложений на golang с помощью Docker является очень популярным способом развертывания приложений.

Шаг 1: Написание Dockerfile

Dockerfile - это файл, который описывает настройки и инструкции для создания образа контейнера. Напишем простой Dockerfile для нашего приложения на golang:

FROM golang:1.16-alpine
WORKDIR /app
COPY . .
RUN go build -o app .
CMD ["./app"]

Этот Dockerfile использует официальный образ golang:1.16-alpine в качестве базового образа. Затем он создает рабочую директорию /app и копирует все файлы из текущей директории в нее. Затем он собирает приложение с помощью команды go build и запускает его с помощью команды CMD.

Шаг 2: Сборка образа

Чтобы создать образ контейнера, необходимо выполнить команду docker build в директории с Dockerfile:

docker build -t my-golang-app .

-t определяет имя и тег образа, в данном случае my-golang-app.

Шаг 3: Запуск контейнера

Чтобы запустить контейнер на основе созданного образа, выполните команду:

docker run -p 8080:8080 my-golang-app

-p определяет порты, которые будут проброшены из контейнера на хост-систему. В данном случае мы пробрасываем порт 8080. my-golang-app - это имя образа.

Шаг 4: Написание docker-compose

Docker-compose - это инструмент для определения и запуска многоконтейнерных Docker-приложений. Если у вас есть несколько сервисов на golang, вы можете использовать docker-compose для их запуска.

Пример docker-compose.yml файла:

version: '3'
services:
 web:
  build: .
  ports:
   - "8080:8080"
 db:
  image: postgres
  environment:
   POSTGRES_USER: myuser
   POSTGRES_PASSWORD: mypassword

В этом примере определены два сервиса: web и db. Сервис web использует текущую директорию для сборки образа и пробрасывает порт 8080. Сервис db использует официальный образ postgres и устанавливает переменные окружения для пользователя и пароля.

Чтобы запустить приложение с помощью docker-compose, выполните команду:

docker-compose up

Эта команда создаст и запустит оба сервиса, определенные в файле docker-compose.yml.

В заключении, Docker является мощным инструментом для контейнеризации приложений на golang. Написание Dockerfile и docker-compose файла может занять некоторое время, но это позволит упаковать приложение и его зависимости в единый контейнер, который можно легко развернуть на любой платформе.