Настройка среды разработки

Примечание

Изменения в средах разработки с Docker Desktop 4.13

Docker упростил настройку проекта среды разработки. Все, что вам нужно для начала, — это файл compose-dev.yaml. Если у вас есть существующий проект с папкой .docker/, он автоматически переносится при следующем запуске.

Если вы используете .docker/docker-compose.yaml, мы перемещаем его на ../compose-dev.yaml. Если вы используете .docker/config.json, мы создаём файл ../compose-dev.yaml с одной службой с именем «приложение». Он настроен на использование образа или Dockerfile, на который ссылается JSON, в качестве отправной точки.

Чтобы настроить среду разработки, существуют дополнительные шаги настройки, которые сообщают Docker Desktop, как создавать, запускать и использовать правильный образ для ваших служб.

Среды разработки используют файл compose-dev.yaml, расположенный в корне вашего проекта. Данный файл позволяет вам определить образ, необходимый для выделенной службы, порты, которые вы хотите открывает, а также дополнительные параметры конфигурации.

Далее приведён пример файла compose-dev.yaml.

version: "3.7"
services:
  backend:
    build:
      context: backend
      target: development
    secrets:
      - db-password
    depends_on:
      - db
  db:
    image: mariadb
    restart: always
    healthcheck:
      test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent" ]
      interval: 3s
      retries: 5
      start_period: 30s
    secrets:
      - db-password
    volumes:
      - db-data:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=example
      - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db-password
    expose:
      - 3306
  proxy:
    build: proxy
    ports:
      - 8080:80
    depends_on:
      - backend
volumes:
  db-data:
secrets:
  db-password:
    file: db/password.txt

В файле yaml контекст сборки backend указывает, что контейнер должен быть собран с использованием этапа development (атрибут target) файла Docker, расположенного в каталоге backend (атрибут context).

Стадия development Dockerfile определяется следующим образом:

FROM golang:1.16-alpine AS build
WORKDIR /go/src/github.com/org/repo
COPY . .
RUN go build -o server .
FROM build AS development
RUN apk update \
    && apk add git
CMD ["go", "run", "main.go"]
FROM alpine:3.12
EXPOSE 8000
COPY --from=build /go/src/github.com/org/repo/server /server
CMD ["/server"]

Цель development использует образ golang:1.16-alpine со всеми зависимостями, необходимыми для разработки. Вы можете запустить свой проект непосредственно из VS Code и взаимодействовать с другими приложениями или службами, такими как база данных или интерфейс.

В примере файлы Docker Compose совпадают. Однако они могут отличаться, и службы, определённые в основном файле Compose, могут использовать другие цели для создания или прямой ссылки на другие образы.

Что дальше?

Узнайте, как распространять среду разработки