設定開發環境

重要

Dev Environments 不再處於積極開發中。

雖然現有功能仍然可用,但我們可能需要更長時間來響應支援請求。

Docker Desktop 4.13 對 Dev Environments 的更改

Docker 簡化了開發環境專案的配置方式。入門所需的一切都包含在一個 compose-dev.yaml 檔案中。如果您的現有專案包含 .docker/ 資料夾,則下次啟動時會自動遷移。

如果您正在使用 .docker/docker-compose.yaml,我們會將其移動到 ../compose-dev.yaml。如果您正在使用 .docker/config.json,我們會建立一個 ../compose-dev.yaml 檔案,其中包含一個名為 "app" 的服務。該服務被配置為使用 JSON 中引用的映象或 Dockerfile 作為起始點。

要設定開發環境,還需要額外的配置步驟來告訴 Docker Desktop 如何構建、啟動併為您的服務使用正確的映象。

Dev Environments 使用專案根目錄下的 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 指定容器應使用位於 backend 目錄 (context 屬性) 中的 Dockerfile 的 development 階段 (target 屬性) 進行構建

Dockerfile 的 development 階段定義如下

# syntax=docker/dockerfile:1
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 檔案中定義的服務可以使用其他目標來構建或直接引用其他映象。

下一步?

瞭解如何分發您的開發環境

頁面選項